home *** CD-ROM | disk | FTP | other *** search
- ' Programm für 2x320 Achtel-Noten lange Duette ! DUEDITA.GFA 1-2/1991 Vers.2.0
- ' ##############################################################################
- ON ERROR GOSUB a_fehler_abfangen ! Tonumfang.......: 4 Oktaven
- @0_globalvariablen_notenspeicher ! Notenzahl.insg..: 2 x 320
- @0_globalvariablen_grafik ! Sückzahl.pro.Blk: 160
- @0_globalvariablen_menue ! Angepaßtes Keyb.: Casio MT-260
- @0_grafische_vorbereitungen_mit_inline ! Programmierspr..: GFA-Basic3.0
- @0_sonstige_vorbereitungen ! Autor...........: Mittelmaier
- @0_oberste_schleife_hauptprogramm ! Adresse.........: Ufnau3,1B21
- ' ##############################################################################
- ' V O R B E R E I T U N G E N :
- ' ##############################################################################
- > PROCEDURE 0_globalvariablen_notenspeicher
- ' ----------------------------------------------------------------------------
- LOCAL n| ! Stückzähler
- ' ............................................................................
- LET gsw!=FALSE ! Stimmwechselflag (Curs.setzen)
- LET gmidi!=TRUE ! Midischalter
- LET gnotencode!=TRUE ! Schalter für St.nr.codierung
- LET gtaktschl!=TRUE ! Schalter für Taktschlagzeug
- LET gbasistonlaenge|=13 ! Wie lang soll ein Ton dauern
- LET gk1|=4 ! Sound Kanal 1 Pipe organ
- LET gk2|=4 ! Sound Kanal 2 Pipe organ St.1
- LET gk3|=9 ! Sound Kanal 3 Percussion
- LET gschl|=3 ! bestimmtes Schlagzeugf
- LET gs|=1 ! Aktuelle Stimme (1 oder 2)
- LET gat1#=0 ! Alte Tonhöhe '3_einzelnoten..'
- LET gat2#=0 ! Alte Tonhöhe '3_einzelnoten..'
- LET gc%=1 ! Cursorposition
- LET gm%=320 ! Maximale Notenanzahl
- LET gba%=0 ! Blockanfang
- LET gbe%=0 ! Blockende
- LET gbs|=0 ! Blockstimme
- LET gfsb$="" ! Fileselectbox fotografieren
- LET gpfad$="" ! Pfad für Fileselectbox
- LET gbl$="" ! Block-Speicherstring
- LET gname$="" ! aktueller Stückname
- LET gbs|=0 ! Stimme während Block merken
- DIM ga$(2) ! Noten-Abspeicher-Array |1
- DIM gu$(2) ! Undo-Kopie von "
- LET guname$="" ! Undo-Kopie vom Stücknamen
- LET ghptfle$="NEUHAUPT.HFL" ! Hauptfilename
- LET gts|=0 ! tatsächl.Stückzhl im Hauptfile
- LET gm|=160 ! Maximale Stückzahl
- DIM gs$(2,gm|) ! Hauptfilearray für Stücke
- DIM gi$(gm|) ! Hauptfilearray für Stücknamen
- LET gts2|=0 ! Stückzahl im Hauptfile
- DIM gs2$(2,gm|) ! Hauptfilearray für Stücke
- DIM gi2$(gm|) ! Hauptfilearray für Stücknamen
- FOR n|=1 TO gm| ! Alle potentiellen Namen durch
- LET gi2$(n|)="________" ! Stückname für leeres Stück
- NEXT n| ! nächster Stückname
- LET ghptfle2$="" ! Hauptfilename
- ' ----------------------------------------------------------------------------
- ' |1: Die Abspeicherung einer Note sieht wie folgt aus:
- ' Bit 7: Gebunden, Bit 6: unt.Kl., Bit 5: Tktstr, Bit 0-4: Tonhöhe
- ' Die obige Bitzähl. beginnt mit 0 von rechts! 'Normale' Zählung:
- ' Bit 1: Gebunden, Bit 2: unt.Kl., Bit 3: Tktstr, Bit 4-8: Tonhöhe
- ' ----------------------------------------------------------------------------
- RETURN
- > PROCEDURE 0_globalvariablen_grafik
- ' ----------------------------------------------------------------------------
- LOCAL z% ! Zwischenergebnis
- ' ............................................................................
- LET gm$="" ! Menüzeile
- LET gns$="" ! Notenschlüsselnegativ
- LET gkl$="" ! Klaviaturnegativ
- ' ............................................................................
- DIM gzvs%(9) ! Zeilenvertikalstartarray
- FOR i|=1 TO 8 ! alle 8 Zeilen durch
- LET gzvs%(i|)=17+(i|-1)*48 ! Vertikalstart der 1. Zeile |1
- NEXT i| ! nächste Zeile
- ' ............................................................................
- DIM gx%(2,gm%),gy%(2,320) ! Positionsarray für Noten x.St.
- FOR i%=1 TO gm% ! Alle Notenpositionen durch
- LET z%=(i%-1-TRUNC((i%-1)/80)*80)*8 ! x-Startposition links berechn.
- LET gx%(1,i%)=z% ! x-Startposition links berechn.
- LET z%=gzvs%(2*TRUNC((i%-1)/80)+1)+2 ! y-Startposition oben berechn.
- LET gy%(1,i%)=z% ! y-Startposition oben berechn.
- NEXT i% ! nächste Notenposition
- FOR i%=1 TO gm% ! Alle Notenpositionen durch
- LET z%=(i%-1-TRUNC((i%-1)/80)*80)*8 ! x-Startposition links berechn.
- LET gx%(2,i%)=z% ! x-Startposition links berechn.
- LET z%=gzvs%(2*TRUNC((i%-1)/80)+2)+2 ! y-Startposition oben berechn.
- LET gy%(2,i%)=z% ! y-Startposition oben berechn.
- NEXT i% ! nächste Notenposition
- ' ............................................................................
- RESTORE y_anfang_notenkopf ! Lesezeiger setzen
- DIM gyan|(25) ! Notenkopf-y-anfang-array
- FOR i|=25 DOWNTO 1 ! 2 Oktaven von oben nach unten
- READ gyan|(i|) ! Notenkopfanf. der Note lesen
- NEXT i| ! nächstuntere Taste
- DIM gb$(2,256) ! Noten-Foto-array |3
- ' ----------------------------------------------------------------------------
- ' |1: Bei einer Bildschirmhöhe von 400-Menüzeile(16)=384 Punkten er-
- ' gibt sich für jede der 8 Notenzeilen eine Höhe von 48 Punkten.
- ' Array muß bis 9 dimensioniert werden wegen der Prozedur namens:
- ' 'Welcher_notenplatz'.
- ' |2: Am oberen Rand der Notenzeile befinden sich ja zwei Begren-
- ' zungslinien. Diese werden noch nicht mitgezählt. Die 1.Linie da-
- ' runter erhält die Nummer null, die zweite eins usw.
- ' |3: Bit 7: Gebunden, Bit 6: unt.Kl., Bit 5: Tktstr, Bit 0-4: Tonhöhe
- ' Die obige Bitzähl. beginnt mit 0 von rechts! 'Normale' Zählung:
- ' Bit 1: Gebunden, Bit 2: unt.Kl., Bit 3: Tktstr, Bit 4-8: Tonhöhe
- ' ----------------------------------------------------------------------------
- RETURN
- > PROCEDURE 0_globalvariablen_menue
- ' ----------------------------------------------------------------------------
- ' K o n s t a n t e n :
- ' ----------------------------------------------------------------------------
- LET gbb%=639 ! Bildschirmbreite
- LET gbh%=399 ! Bildschirmhöhe
- LET ghp$="" ! Helptastenbildschirm
- ' ----------------------------------------------------------------------------
- ' L a u f v a r i a b l e n :
- ' ----------------------------------------------------------------------------
- LET gaccr!=FALSE ! Rausflag fürs Accessory-Menü
- ' ----------------------------------------------------------------------------
- RETURN
- ' ------------------------------------------------------------------------------
- > PROCEDURE 0_grafische_vorbereitungen_mit_inline
- ' ----------------------------------------------------------------------------
- @1_statt_zeichnen_inline ! diese Zeile aktiv (=ohne ')
- ' !
- @1_klaviatur_fotografieren !
- @1_notenschluessel_fotografieren !
- @1_notenbilder_fotografieren !
- @1_workscreen_notenlinien_zeichnen ! nicht fotografiert weg.Speichr
- @1_workscreen_menue !
- @1_cursor_setzen !
- DEFMOUSE 0 ! Maus als Pfeil (nicht Biene)
- ' ----------------------------------------------------------------------------
- ' Statt dieser Prozedur hätte auch aufgerufen werden können:
- ' PROCEDURE 0_grafische_vorbereitungen_ohne_inline
- ' ----------------------------------------------------------------------------
- RETURN
- > PROCEDURE 1_workscreen_notenlinien_zeichnen
- ' ----------------------------------------------------------------------------
- CLS ! Bildschirm löschen
- ' ............................................................................
- FOR i|=1 TO 8 ! alle 8 Zeilen durch
- ' ..........................................................................
- IF ODD(i|) ! f i| ungerade:
- DEFLINE 1 ! durchgezogene Linie
- ELSE ! sonst (d.h. 2.Stimme)
- @a_gepunktete_linie ! gepunktet, kleiner Abstand
- ENDIF !
- LET y%=gzvs%(i|) ! y-Koord. zw.speichern
- LINE 0,y%,639,y% ! 1. obere Begrenzungslinie
- LET y%=gzvs%(i|)+1 ! y-Koord. zw.speichern
- LINE 0,y%,639,y% ! 2. obere Begrenzungslinie
- ' ..........................................................................
- FOR j|=1 TO 8 ! alle Notenlinien durch
- LET y%=gzvs%(i|)+1+5*j| ! y-Koord. zw.speichern
- IF j|=1 OR j|=2 OR j|=8 ! obersten 2 und 8.Hilfslinien
- DEFLINE 3 ! gepunktet, großer Abstand
- ELSE ! normale Notenlinie
- DEFLINE 1 ! durchgezogene Linie
- LINE 0,y%,639,y% ! Notenlinie
- ENDIF !
- NEXT j| ! nächste Notenlinie
- DEFLINE 1 ! durchgezogene Linie
- ' ..........................................................................
- NEXT i| ! nächste Zeile
- ' ............................................................................
- LINE 0,16,639,16 ! Begrenzungslinie zum Menü
- ' ----------------------------------------------------------------------------
- RETURN
- > PROCEDURE 1_statt_zeichnen_inline
- ' ----------------------------------------------------------------------------
- LOCAL a1% ! Adressvariable
- LOCAL a1# ! Bildschirmspeicherstring
- ' ............................................................................
- ' ! |1
- ' ## INLINE:
- ' $0000: aa aa a8 00 00 07 ff ff fe 00 00 01 ff ff ff 80
- ' $0010: 00 00 40 00 00 3f ff ff f0 00 00 0f ff ff fc 00
- ' $0020: 00 03 ff ff ff 00 00 00 80 00 00 7f ff ff e0 00
- ' $0030: 00 1f ff ff f8 00 00 04 00 00 03 ff ff ff 00 00
- ' $0040: 00 ff ff ff c0 00 00 3f ff ff f0 00 00 08 00 00
- ' $0050: 55 55 58 00 00 07 ff ff fe 00 00 01 ff ff ff 80
- ' $0060: 00 00 40 00 00 3f ff ff f0 00 00 0f ff ff fc 00
- ' $0070: 00 03 ff ff ff 00 00 00 80 00 00 7f ff ff e0 00
- ' $0080: 00 1f ff ff f8 00 00 04 00 00 03 ff ff ff 00 00
- ' $0090: 00 ff ff ff c0 00 00 3f ff ff f0 00 00 08 00 00
- ' $00a0: aa aa a8 00 00 07 ff ff fe 00 00 01 ff ff ff 80
- ' $00b0: 00 00 40 00 00 3f ff ff f0 00 00 0f ff ff fc 00
- ' $00c0: 00 03 ff ff ff 00 00 00 80 00 00 7f ff ff e0 00
- ' $00d0: 00 1f ff ff f8 00 00 04 00 00 03 ff ff ff 00 00
- ' $00e0: 00 ff ff ff c0 00 00 3f ff ff f0 00 00 08 00 00
- ' $00f0: 55 55 58 00 00 07 ff ff fe 00 00 01 ff ff ff 80
- ' $0100: 00 00 40 00 00 3f ff ff f0 00 00 0f ff ff fc 00
- ' $0110: 00 03 ff ff ff 00 00 00 80 00 00 7f ff ff e0 00
- ' $0120: 00 1f ff ff f8 00 00 04 00 00 03 ff ff ff 00 00
- ' $0130: 00 ff ff ff c0 00 00 3f ff ff f0 00 00 08 00 00
- ' $0140: aa aa a8 00 00 07 ff ff fe 00 00 01 ff ff ff 80
- ' $0150: 00 00 40 00 00 3f ff ff f0 00 00 0f ff ff fc 00
- ' $0160: 00 03 ff ff ff 00 00 00 80 00 00 7f ff ff e0 00
- ' $0170: 00 1f ff ff f8 00 00 04 00 00 03 ff ff ff 00 00
- ' $0180: 00 ff ff ff c0 00 00 3f ff ff f0 00 00 08 00 00
- ' $0190: 55 55 58 00 00 07 ff ff fe 00 00 01 ff ff ff 80
- ' $01a0: 00 00 40 00 00 3f ff ff f0 00 00 0f ff ff fc 00
- ' $01b0: 00 03 ff ff ff 00 00 00 80 00 00 7f ff ff e0 00
- ' $01c0: 00 1f ff ff f8 00 00 04 00 00 03 ff ff ff 00 00
- ' $01d0: 00 ff ff ff c0 00 00 3f ff ff f0 00 00 08 00 00
- ' $01e0: aa aa a8 00 00 07 ff ff fe 00 00 01 ff ff ff 80
- ' $01f0: 00 00 40 00 00 3f ff ff f0 00 00 0f ff ff fc 00
- ' $0200: 00 03 ff ff ff 00 00 00 80 00 00 7f ff ff e0 00
- ' $0210: 00 1f ff ff f8 00 00 04 00 00 03 ff ff ff 00 00
- ' $0220: 00 ff ff ff c0 00 00 3f ff ff f0 00 00 08 00 00
- ' $0230: 55 55 58 00 00 07 ff ff fe 00 00 01 ff ff ff 80
- ' $0240: 00 00 40 00 00 3f ff ff f0 00 00 0f ff ff fc 00
- ' $0250: 00 03 ff ff ff 00 00 00 80 00 00 7f ff ff e0 00
- ' $0260: 00 1f ff ff f8 00 00 04 00 00 03 ff ff ff 00 00
- ' $0270: 00 ff ff ff c0 00 00 3f ff ff f0 00 00 08 00 00
- ' $0280: aa aa a8 00 00 07 ff ff fe 00 00 01 ff ff ff 80
- ' $0290: 00 00 40 00 00 3f ff ff f0 00 00 0f ff ff fc 00
- ' $02a0: 00 03 ff ff ff 00 00 00 80 00 00 7f ff ff e0 00
- ' $02b0: 00 1f ff ff f8 00 00 04 00 00 03 ff ff ff 00 00
- ' $02c0: 00 ff ff ff c0 00 00 3f ff ff f0 00 00 08 00 00
- ' $02d0: 55 55 58 00 00 07 ff ff fe 00 00 01 ff ff ff 80
- ' $02e0: 00 00 40 00 00 3f ff ff f0 00 00 0f ff ff fc 00
- ' $02f0: 00 03 ff ff ff 00 00 00 80 00 00 7f ff ff e0 00
- ' $0300: 00 1f ff ff f8 00 00 04 00 00 03 ff ff ff 00 00
- ' $0310: 00 ff ff ff c0 00 00 3f ff ff f0 00 00 08 00 00
- ' $0320: aa aa a8 00 00 07 ff ff fe 00 00 01 ff ff ff 80
- ' $0330: 00 00 40 00 00 3f ff ff f0 00 00 0f ff ff fc 00
- ' $0340: 00 03 ff ff ff 00 00 00 80 00 00 7f ff ff e0 00
- ' $0350: 00 1f ff ff f8 00 00 04 00 00 03 ff ff ff 00 00
- ' $0360: 00 ff ff ff c0 00 00 3f ff ff f0 00 00 08 00 00
- ' $0370: 55 55 58 00 00 07 ff ff fe 00 00 01 ff ff ff 80
- ' $0380: 00 00 40 00 00 3f ff ff f0 00 00 0f ff ff fc 00
- ' $0390: 00 03 ff ff ff 00 00 00 80 00 00 7f ff ff e0 00
- ' $03a0: 00 1f ff ff f8 00 00 04 00 00 03 ff ff ff 00 00
- ' $03b0: 00 ff ff ff c0 00 00 3f ff ff f0 00 00 08 00 00
- ' $03c0: aa aa a8 00 00 07 ff ff fe 00 00 01 ff ff ff 80
- ' $03d0: 00 00 40 00 00 3f ff ff f0 00 00 0f ff ff fc 00
- ' $03e0: 00 03 ff ff ff 00 00 00 80 00 00 7f ff ff e0 00
- ' $03f0: 00 1f ff ff f8 00 00 04 00 00 03 ff ff ff 00 00
- ' $0400: 00 ff ff ff c0 00 00 3f ff ff f0 00 00 08 00 00
- ' $0410: 55 55 58 00 00 07 ff ff fe 00 00 01 ff ff ff 80
- ' $0420: 00 00 40 00 00 3f ff ff f0 00 00 0f ff ff fc 00
- ' $0430: 00 03 ff ff ff 00 00 00 80 00 00 7f ff ff e0 00
- ' $0440: 00 1f ff ff f8 00 00 04 00 00 03 ff ff ff 00 00
- ' $0450: 00 ff ff ff c0 00 00 3f ff ff f0 00 00 08 00 00
- ' $0460: aa aa a8 00 00 07 ff ff fe 00 00 01 ff ff ff 80
- ' $0470: 00 00 40 00 00 3f ff ff f0 00 00 0f ff ff fc 00
- ' $0480: 00 03 ff ff ff 00 00 00 80 00 00 7f ff ff e0 00
- ' $0490: 00 1f ff ff f8 00 00 04 00 00 03 ff ff ff 00 00
- ' $04a0: 00 ff ff ff c0 00 00 3f ff ff f0 00 00 08 00 00
- ' $04b0: 55 55 58 00 00 07 ff ff fe 00 00 01 ff ff ff 80
- ' $04c0: 00 00 40 00 00 3f ff ff f0 00 00 0f ff ff fc 00
- ' $04d0: 00 03 ff ff ff 00 00 00 80 00 00 7f ff ff e0 00
- ' $04e0: 00 1f ff ff f8 00 00 04 00 00 03 ff ff ff 00 00
- ' $04f0: 00 ff ff ff c0 00 00 3f ff ff f0 00 00 08 00 00
- ' $0500: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $0510: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $0520: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $0530: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $0540: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $0550: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
- ' $0560: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
- ' $0570: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
- ' $0580: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
- ' $0590: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
- ' $05a0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
- ' $05b0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
- ' $05c0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
- ' $05d0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
- ' $05e0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
- ' $05f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $0600: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 08 08
- ' $0610: 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08
- ' $0620: 08 08 08 08 08 08 08 00 00 00 00 00 00 00 00 00
- ' $0630: 00 00 00 00 00 00 00 00 00 00 00 18 00 00 00 00
- ' $0640: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $0650: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 08 08
- ' $0660: 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08
- ' $0670: 08 08 08 08 08 08 08 00 00 00 00 00 00 00 00 00
- ' $0680: 00 00 00 00 00 00 00 00 00 00 00 18 00 00 00 00
- ' $0690: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $06a0: 00 00 00 00 00 00 00 00 7e 00 00 00 00 00 08 08
- ' $06b0: 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08
- ' $06c0: 08 08 08 08 08 08 7e 00 00 00 00 00 00 00 00 00
- ' $06d0: 00 00 00 00 00 00 00 00 00 00 00 18 00 00 00 00
- ' $06e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $06f0: 00 00 00 00 00 00 00 00 7e 00 00 00 00 00 08 08
- ' $0700: 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08
- ' $0710: 08 08 08 08 08 08 7e 00 00 00 00 00 00 00 00 00
- ' $0720: 00 00 00 00 00 00 00 00 00 00 00 18 00 00 00 00
- ' $0730: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $0740: 00 00 00 00 00 00 7e 00 ff 00 00 00 00 00 08 08
- ' $0750: 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08
- ' $0760: 08 08 08 08 7e 08 ff 00 00 00 00 00 00 00 00 00
- ' $0770: 00 00 00 00 00 00 00 00 00 00 00 18 00 00 00 00
- ' $0780: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $0790: 00 00 00 00 00 00 7e 7e 7e 00 00 00 00 00 08 08
- ' $07a0: 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08
- ' $07b0: 08 08 08 08 7e 7e 7e 00 00 00 00 00 00 00 00 00
- ' $07c0: 00 00 00 00 00 00 00 00 00 00 00 18 00 00 00 00
- ' $07d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $07e0: 00 00 00 00 00 00 00 7e 7e 00 00 00 00 00 08 08
- ' $07f0: 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08
- ' $0800: 08 08 08 08 00 7e 7e 00 00 00 00 00 00 00 00 00
- ' $0810: 00 00 00 00 00 00 00 00 00 00 00 18 00 00 00 00
- ' $0820: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $0830: 00 00 00 00 7e 7e 7e 7e 08 00 00 00 00 00 08 08
- ' $0840: 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08
- ' $0850: 08 08 7e 7e 7e 7e 00 00 00 00 00 00 00 00 00 00
- ' $0860: 00 00 00 00 00 00 00 00 00 00 00 18 00 00 00 00
- ' $0870: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $0880: 00 00 00 00 7e 7e 7e 7e 08 00 00 00 00 00 08 08
- ' $0890: 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08
- ' $08a0: 08 08 7e 7e 7e 7e 00 00 00 00 00 00 00 00 00 00
- ' $08b0: 00 00 00 00 00 00 00 00 00 00 00 18 00 00 00 00
- ' $08c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $08d0: 00 00 7e 00 00 ff ff ff ff 00 00 00 00 00 08 08
- ' $08e0: 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08
- ' $08f0: 7e 08 00 ff ff ff ff 00 00 00 00 00 00 00 00 00
- ' $0900: 00 00 00 00 00 00 00 00 00 00 00 18 00 00 00 00
- ' $0910: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $0920: 00 00 7e 7e 7e 7e 7e 08 08 00 00 00 00 00 08 08
- ' $0930: 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08
- ' $0940: 7e 7e 7e 7e 7e 00 00 00 00 00 00 00 00 00 00 00
- ' $0950: 00 00 00 00 00 00 00 00 00 00 00 18 00 00 00 00
- ' $0960: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $0970: 00 00 00 7e 7e 7e 7e 08 08 00 00 00 00 00 08 08
- ' $0980: 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08
- ' $0990: 00 7e 7e 7e 7e 00 00 00 00 00 00 00 00 00 00 00
- ' $09a0: 00 00 00 00 00 00 00 00 00 00 00 18 00 00 00 00
- ' $09b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $09c0: 00 7e 7e 7e 7e 08 08 08 08 00 00 00 00 00 08 08
- ' $09d0: 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 7e
- ' $09e0: 7e 7e 7e 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $09f0: 00 00 00 00 00 00 00 00 00 00 00 18 00 00 00 00
- ' $0a00: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $0a10: 00 7e 7e 7e 7e 08 08 08 08 00 00 00 00 00 08 08
- ' $0a20: 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 7e
- ' $0a30: 7e 7e 7e 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $0a40: 00 00 00 00 00 00 00 00 00 00 00 18 00 00 00 00
- ' $0a50: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
- ' $0a60: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
- ' $0a70: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
- ' $0a80: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
- ' $0a90: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
- ' $0aa0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 7e
- ' $0ab0: 7e 7e 7e 08 08 08 08 08 08 00 00 00 00 00 08 08
- ' $0ac0: 08 08 08 08 08 08 08 08 08 08 08 08 08 7e 7e 7e
- ' $0ad0: 7e 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $0ae0: 00 00 00 00 00 00 00 00 00 00 00 18 00 00 00 00
- ' $0af0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $0b00: 7e 7e 7e 08 08 08 08 08 08 00 00 00 00 00 08 08
- ' $0b10: 08 08 08 08 08 08 08 08 08 08 08 08 08 00 7e 7e
- ' $0b20: 7e 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $0b30: 00 00 00 00 00 00 00 00 00 00 00 3c 00 00 3c 00
- ' $0b40: 00 00 00 00 00 00 00 00 00 00 00 00 00 7e 7e 7e
- ' $0b50: 7e 08 08 08 08 08 08 08 08 00 00 00 00 00 08 08
- ' $0b60: 08 08 08 08 08 08 08 08 08 08 08 7e 7e 7e 7e 00
- ' $0b70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $0b80: 00 00 00 00 00 00 00 00 00 00 00 24 00 00 24 00
- ' $0b90: 00 00 00 00 00 00 00 00 00 00 00 00 00 7e 7e 7e
- ' $0ba0: 7e 08 08 08 08 08 08 08 08 00 00 00 00 00 08 08
- ' $0bb0: 08 08 08 08 08 08 08 08 08 08 08 7e 7e 7e 7e 00
- ' $0bc0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $0bd0: 00 00 00 00 00 00 00 00 00 00 00 24 00 00 24 00
- ' $0be0: ff ff ff ff ff ff ff ff ff ff ff ff ff 81 ff ff
- ' $0bf0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
- ' $0c00: ff ff ff ff ff ff ff ff ff ff ff 81 ff ff ff ff
- ' $0c10: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
- ' $0c20: ff ff ff ff ff ff ff ff ff ff ff e7 ff ff e7 ff
- ' $0c30: 00 00 00 00 00 00 00 00 00 00 00 00 7e 7e 7e 7e
- ' $0c40: 08 08 08 08 08 08 08 08 08 00 00 00 00 00 08 08
- ' $0c50: 08 08 08 08 08 08 08 08 08 08 7e 7e 7e 7e 00 00
- ' $0c60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $0c70: 00 00 00 00 00 00 00 00 00 00 00 24 00 00 24 00
- ' $0c80: 00 00 00 00 00 00 00 00 00 00 00 00 7e 7e 7e 7e
- ' $0c90: 08 08 08 08 08 08 08 08 08 00 00 00 00 00 08 08
- ' $0ca0: 08 08 08 08 08 08 08 08 08 08 7e 7e 7e 7e 00 00
- ' $0cb0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $0cc0: 00 00 00 00 00 00 00 00 00 00 00 24 00 00 24 00
- ' $0cd0: 00 00 00 00 00 00 00 00 00 00 7e 7e 7e 7e 08 08
- ' $0ce0: 08 08 08 08 08 08 08 08 08 00 00 00 00 00 08 08
- ' $0cf0: 08 08 08 08 08 08 08 08 7e 7e 7e 7e 00 00 00 00
- ' $0d00: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $0d10: 00 00 00 00 00 00 00 00 00 00 00 24 00 00 24 00
- ' $0d20: 00 00 00 00 00 00 00 00 00 00 7e 7e 7e 7e 08 08
- ' $0d30: 08 08 08 08 08 08 08 08 08 00 00 00 00 00 08 08
- ' $0d40: 08 08 08 08 08 08 08 08 7e 7e 7e 7e 00 00 00 00
- ' $0d50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $0d60: 00 00 00 00 00 00 00 00 00 00 00 24 00 00 24 00
- ' $0d70: ff ff ff ff ff ff ff ff ff ff 81 ff ff ff ff ff
- ' $0d80: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
- ' $0d90: ff ff ff ff ff ff ff ff 81 ff ff ff ff ff ff ff
- ' $0da0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
- ' $0db0: ff ff ff ff ff ff ff ff ff ff ff e7 ff ff e7 ff
- ' $0dc0: 00 00 00 00 00 00 00 00 7e 7e 7e 7e 08 08 08 08
- ' $0dd0: 08 08 08 08 08 08 08 08 08 00 00 00 00 00 08 08
- ' $0de0: 08 08 08 08 08 08 7e 7e 7e 7e 00 00 00 00 00 00
- ' $0df0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $0e00: 00 00 00 00 00 00 00 00 00 00 00 24 00 00 24 00
- ' $0e10: 00 00 00 00 00 00 00 00 00 7e 7e 7e 08 08 08 08
- ' $0e20: 08 08 08 08 08 08 08 08 08 00 00 00 00 00 08 08
- ' $0e30: 08 08 08 08 08 08 00 7e 7e 7e 00 00 00 00 00 00
- ' $0e40: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $0e50: 00 00 00 00 00 00 00 00 00 00 00 24 00 00 24 00
- ' $0e60: 00 00 00 00 00 00 7e 7e 7e 7e 7e 08 08 08 08 08
- ' $0e70: 08 08 08 08 08 08 08 08 08 00 00 00 00 00 08 08
- ' $0e80: 08 08 08 08 7e 7e 7e 7e 7e 00 00 00 00 00 00 00
- ' $0e90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $0ea0: 00 00 00 00 00 00 00 00 00 00 00 24 00 00 24 00
- ' $0eb0: 00 00 00 00 00 00 7e 7e 7e 7e 7e 08 08 08 08 08
- ' $0ec0: 08 08 08 08 08 08 08 08 08 00 00 00 00 00 08 08
- ' $0ed0: 08 08 08 08 7e 7e 7e 7e 7e 00 00 00 00 00 00 00
- ' $0ee0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $0ef0: 00 00 00 00 00 00 00 00 00 00 00 24 00 00 24 00
- ' $0f00: ff ff ff ff ff ff 81 ff ff ff ff ff ff ff ff ff
- ' $0f10: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
- ' $0f20: ff ff ff ff 81 ff ff ff ff ff ff ff ff ff ff ff
- ' $0f30: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
- ' $0f40: ff ff ff ff ff ff ff ff ff ff ff e7 ff ff e7 ff
- ' $0f50: 00 00 00 00 00 7e 7e 7e 7e 08 08 08 08 08 08 08
- ' $0f60: 08 08 08 08 08 08 08 08 08 00 00 00 00 00 08 08
- ' $0f70: 08 08 08 7e 7e 7e 7e 00 00 00 00 00 00 00 00 00
- ' $0f80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $0f90: 00 00 00 00 00 00 00 00 00 00 00 24 00 00 24 00
- ' $0fa0: 00 00 00 00 00 7e 7e 7e 7e 08 08 08 08 08 08 08
- ' $0fb0: 08 08 08 08 08 08 08 08 08 00 00 00 00 00 08 08
- ' $0fc0: 08 08 08 7e 7e 7e 7e 00 00 00 00 00 00 00 00 00
- ' $0fd0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $0fe0: 00 00 00 00 00 00 00 00 00 00 00 24 00 00 24 00
- ' $0ff0: 00 00 00 7e 7e 7e 7e 08 08 08 08 08 08 08 08 08
- ' $1000: 08 08 08 08 08 08 08 08 08 00 00 00 00 00 08 08
- ' $1010: 08 7e 7e 7e 7e 00 00 00 00 00 00 00 00 00 00 00
- ' $1020: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $1030: 00 00 00 00 00 00 00 00 00 00 00 3c 00 00 3c 00
- ' $1040: 00 00 00 7e 7e 7e 7e 08 08 08 08 08 08 08 08 08
- ' $1050: 08 08 08 08 08 08 08 08 08 00 00 00 00 00 08 08
- ' $1060: 08 7e 7e 7e 7e 00 00 00 00 00 00 00 00 00 00 00
- ' $1070: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $1080: 00 00 00 00 00 00 00 00 00 00 00 18 00 00 00 00
- ' $1090: ff ff ff 81 ff ff ff ff ff ff ff ff ff ff ff ff
- ' $10a0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
- ' $10b0: ff 81 ff ff ff ff ff ff ff ff ff ff ff ff ff ff
- ' $10c0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
- ' $10d0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
- ' $10e0: 00 7e 7e 7e 7e 08 08 08 08 08 08 08 08 08 08 08
- ' $10f0: 08 08 08 08 08 08 08 08 08 00 00 00 00 00 08 7e
- ' $1100: 7e 7e 7e 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $1110: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $1120: 00 00 00 00 00 00 00 00 00 00 00 18 00 00 00 00
- ' $1130: 00 00 7e 7e 7e 08 08 08 08 08 08 08 08 08 08 08
- ' $1140: 08 08 08 08 08 08 08 08 08 00 00 00 00 00 08 00
- ' $1150: 7e 7e 7e 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $1160: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $1170: 00 00 00 00 00 00 00 00 00 00 00 18 00 00 00 00
- ' $1180: 7e 7e 7e 7e 08 08 08 08 08 08 08 08 08 08 08 08
- ' $1190: 08 08 08 08 08 08 08 08 08 00 00 00 00 00 7e 7e
- ' $11a0: 7e 7e 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $11b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $11c0: 00 00 00 00 00 00 00 00 00 00 00 18 00 00 00 00
- ' $11d0: 7e 7e 7e 7e 08 08 08 08 08 08 08 08 08 08 08 08
- ' $11e0: 08 08 08 08 08 08 08 08 08 00 00 00 00 00 7e 7e
- ' $11f0: 7e 7e 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $1200: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $1210: 00 00 00 00 00 00 00 00 00 00 00 18 00 00 00 00
- ' $1220: ff ff 7e 7e 08 08 08 08 08 08 08 08 08 08 08 08
- ' $1230: 08 08 08 08 08 08 08 08 08 00 00 00 00 00 ff ff
- ' $1240: 7e 7e 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $1250: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $1260: 00 00 00 00 00 00 00 00 00 00 00 18 00 00 00 00
- ' $1270: 7e 7e 08 08 08 08 08 08 08 08 08 08 08 08 08 08
- ' $1280: 08 08 08 08 08 08 08 08 08 00 00 00 00 00 7e 7e
- ' $1290: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $12a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $12b0: 00 00 00 00 00 00 00 00 00 00 00 18 00 00 00 00
- ' $12c0: 7e 7e 08 08 08 08 08 08 08 08 08 08 08 08 08 08
- ' $12d0: 08 08 08 08 08 08 08 08 08 00 00 00 00 00 7e 7e
- ' $12e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $12f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $1300: 00 00 00 00 00 00 00 00 00 00 00 18 00 00 00 00
- ' $1310: 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08
- ' $1320: 08 08 08 08 08 08 08 08 08 00 00 00 00 00 00 00
- ' $1330: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $1340: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $1350: 00 00 00 00 00 00 00 00 00 00 00 18 00 00 00 00
- ' $1360: 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08
- ' $1370: 08 08 08 08 08 08 08 08 08 00 00 00 00 00 00 00
- ' $1380: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $1390: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $13a0: 00 00 00 00 00 00 00 00 00 00 00 18 00 00 00 00
- ' $13b0: 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08
- ' $13c0: 08 08 08 08 08 08 08 08 08 00 00 00 00 00 00 00
- ' $13d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $13e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $13f0: 00 00 00 00 00 00 00 00 00 00 00 18 00 00 00 00
- ' $1400: 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08
- ' $1410: 08 08 08 08 08 08 08 08 08 00 00 00 00 00 00 00
- ' $1420: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $1430: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $1440: 00 00 00 00 00 00 00 00 00 00 00 18 00 00 00 00
- ' $1450: 5d 5d 5d 5d 5d 5d 5d 5d 5d 5d 5d 5d 5d 5d 5d 5d
- ' $1460: 5d 5d 5d 5d 5d 5d 5d 5d 5d 55 55 55 55 55 55 55
- ' $1470: 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55
- ' $1480: 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55
- ' $1490: 55 55 55 55 55 55 55 55 55 55 55 5d 55 55 55 55
- ' $14a0: 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55
- ' $14b0: 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55
- ' $14c0: 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55
- ' $14d0: 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55
- ' $14e0: 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55
- ' $14f0: 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18
- ' $1500: 18 18 18 18 18 18 18 18 18 00 00 00 00 00 18 18
- ' $1510: 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18
- ' $1520: 18 18 18 18 18 18 18 00 00 00 00 00 00 00 00 00
- ' $1530: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $1540: 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18
- ' $1550: 18 18 18 18 18 18 18 18 18 00 00 00 00 00 18 18
- ' $1560: 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18
- ' $1570: 18 18 18 18 18 18 18 00 00 00 00 00 00 00 00 00
- ' $1580: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $1590: 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18
- ' $15a0: 18 18 18 18 18 18 18 18 7e 00 00 00 00 00 18 18
- ' $15b0: 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18
- ' $15c0: 18 18 18 18 18 18 7e 00 00 00 00 00 00 00 00 00
- ' $15d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $15e0: 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18
- ' $15f0: 18 18 18 18 18 18 18 18 7e 00 00 00 00 00 18 18
- ' $1600: 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18
- ' $1610: 18 18 18 18 18 18 7e 00 00 00 00 00 00 00 00 00
- ' $1620: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $1630: 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18
- ' $1640: 18 18 18 18 18 18 7e 18 ff 00 00 00 00 00 18 18
- ' $1650: 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18
- ' $1660: 18 18 18 18 7e 18 ff 00 00 00 00 00 00 00 00 00
- ' $1670: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $1680: 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18
- ' $1690: 18 18 18 18 18 18 7e 7e 7e 00 00 00 00 00 18 18
- ' $16a0: 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18
- ' $16b0: 18 18 18 18 7e 7e 7e 00 00 00 00 00 00 00 00 00
- ' $16c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $16d0: 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18
- ' $16e0: 18 18 18 18 18 18 00 7e 7e 00 00 00 00 00 18 18
- ' $16f0: 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18
- ' $1700: 18 18 18 18 00 7e 7e 00 00 00 00 00 00 00 00 00
- ' $1710: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $1720: 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18
- ' $1730: 18 18 18 18 7e 7e 7e 7e 18 00 00 00 00 00 18 18
- ' $1740: 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18
- ' $1750: 18 18 7e 7e 7e 7e 18 00 00 00 00 00 00 00 00 00
- ' $1760: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $1770: 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18
- ' $1780: 18 18 18 18 7e 7e 7e 7e 18 00 00 00 00 00 18 18
- ' $1790: 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18
- ' $17a0: 18 18 7e 7e 7e 7e 18 00 00 00 00 00 00 00 00 00
- ' $17b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $17c0: 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18
- ' $17d0: 18 18 7e 18 00 ff ff ff ff 00 00 00 00 00 18 18
- ' $17e0: 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18
- ' $17f0: 7e 18 00 ff ff ff ff 00 00 00 00 00 00 00 00 00
- ' $1800: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $1810: 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18
- ' $1820: 18 18 7e 7e 7e 7e 7e 18 18 00 00 00 00 00 18 18
- ' $1830: 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18
- ' $1840: 7e 7e 7e 7e 7e 18 18 00 00 00 00 00 00 00 00 00
- ' $1850: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $1860: 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18
- ' $1870: 18 18 00 7e 7e 7e 7e 18 18 00 00 00 00 00 18 18
- ' $1880: 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18
- ' $1890: 00 7e 7e 7e 7e 18 18 00 00 00 00 00 00 00 00 00
- ' $18a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $18b0: 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18
- ' $18c0: 18 7e 7e 7e 7e 18 18 18 18 00 00 00 00 00 18 18
- ' $18d0: 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 7e
- ' $18e0: 7e 7e 7e 18 18 18 18 00 00 00 00 00 00 00 00 00
- ' $18f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $1900: 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18
- ' $1910: 18 7e 7e 7e 7e 18 18 18 18 00 00 00 00 00 18 18
- ' $1920: 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 7e
- ' $1930: 7e 7e 7e 18 18 18 18 00 00 00 00 00 00 00 00 00
- ' $1940: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $1950: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
- ' $1960: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
- ' $1970: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
- ' $1980: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
- ' $1990: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
- ' $19a0: 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 7e
- ' $19b0: 7e 7e 7e 18 18 18 18 18 18 00 00 00 00 00 18 18
- ' $19c0: 18 18 18 18 18 18 18 18 18 18 18 18 18 7e 7e 7e
- ' $19d0: 7e 18 18 18 18 18 18 00 00 00 00 00 00 00 00 00
- ' $19e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $19f0: 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 00
- ' $1a00: 7e 7e 7e 18 18 18 18 18 18 00 00 00 00 00 18 18
- ' $1a10: 18 18 18 18 18 18 18 18 18 18 18 18 18 00 7e 7e
- ' $1a20: 7e 18 18 18 18 18 18 00 00 00 00 00 00 00 00 00
- ' $1a30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $1a40: 18 18 18 18 18 18 18 18 18 18 18 18 18 7e 7e 7e
- ' $1a50: 7e 18 18 18 18 18 18 18 18 00 00 00 00 00 18 18
- ' $1a60: 18 18 18 18 18 18 18 18 18 18 18 7e 7e 7e 7e 18
- ' $1a70: 18 18 18 18 18 18 18 00 00 00 00 00 00 00 00 00
- ' $1a80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $1a90: 18 18 18 18 18 18 18 18 18 18 18 18 18 7e 7e 7e
- ' $1aa0: 7e 18 18 18 18 18 18 18 18 00 00 00 00 00 18 18
- ' $1ab0: 18 18 18 18 18 18 18 18 18 18 18 7e 7e 7e 7e 18
- ' $1ac0: 18 18 18 18 18 18 18 00 00 00 00 00 00 00 00 00
- ' $1ad0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $1ae0: ff ff ff ff ff ff ff ff ff ff ff ff ff 81 ff ff
- ' $1af0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
- ' $1b00: ff ff ff ff ff ff ff ff ff ff ff 81 ff ff ff ff
- ' $1b10: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
- ' $1b20: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
- ' $1b30: 18 18 18 18 18 18 18 18 18 18 18 18 7e 7e 7e 7e
- ' $1b40: 18 18 18 18 18 18 18 18 18 00 00 00 00 00 18 18
- ' $1b50: 18 18 18 18 18 18 18 18 18 18 7e 7e 7e 7e 18 18
- ' $1b60: 18 18 18 18 18 18 18 00 00 00 00 00 00 00 00 00
- ' $1b70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $1b80: 18 18 18 18 18 18 18 18 18 18 18 18 7e 7e 7e 7e
- ' $1b90: 18 18 18 18 18 18 18 18 18 00 00 00 00 00 18 18
- ' $1ba0: 18 18 18 18 18 18 18 18 18 18 7e 7e 7e 7e 18 18
- ' $1bb0: 18 18 18 18 18 18 18 00 00 00 00 00 00 00 00 00
- ' $1bc0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $1bd0: 18 18 18 18 18 18 18 18 18 18 7e 7e 7e 7e 18 18
- ' $1be0: 18 18 18 18 18 18 18 18 18 00 00 00 00 00 18 18
- ' $1bf0: 18 18 18 18 18 18 18 18 7e 7e 7e 7e 18 18 18 18
- ' $1c00: 18 18 18 18 18 18 18 00 00 00 00 00 00 00 00 00
- ' $1c10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $1c20: 18 18 18 18 18 18 18 18 18 18 7e 7e 7e 7e 18 18
- ' $1c30: 18 18 18 18 18 18 18 18 18 00 00 00 00 00 18 18
- ' $1c40: 18 18 18 18 18 18 18 18 7e 7e 7e 7e 18 18 18 18
- ' $1c50: 18 18 18 18 18 18 18 00 00 00 00 00 00 00 00 00
- ' $1c60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $1c70: ff ff ff ff ff ff ff ff ff ff 81 ff ff ff ff ff
- ' $1c80: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
- ' $1c90: ff ff ff ff ff ff ff ff 81 ff ff ff ff ff ff ff
- ' $1ca0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
- ' $1cb0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
- ' $1cc0: 18 18 18 18 18 18 18 18 7e 7e 7e 7e 18 18 18 18
- ' $1cd0: 18 18 18 18 18 18 18 18 18 00 00 00 00 00 18 18
- ' $1ce0: 18 18 18 18 18 18 7e 7e 7e 7e 18 18 18 18 18 18
- ' $1cf0: 18 18 18 18 18 18 18 00 00 00 00 00 00 00 00 00
- ' $1d00: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $1d10: 18 18 18 18 18 18 18 18 00 7e 7e 7e 18 18 18 18
- ' $1d20: 18 18 18 18 18 18 18 18 18 00 00 00 00 00 18 18
- ' $1d30: 18 18 18 18 18 18 00 7e 7e 7e 18 18 18 18 18 18
- ' $1d40: 18 18 18 18 18 18 18 00 00 00 00 00 00 00 00 00
- ' $1d50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $1d60: 18 18 18 18 18 18 7e 7e 7e 7e 7e 18 18 18 18 18
- ' $1d70: 18 18 18 18 18 18 18 18 18 00 00 00 00 00 18 18
- ' $1d80: 18 18 18 18 7e 7e 7e 7e 7e 18 18 18 18 18 18 18
- ' $1d90: 18 18 18 18 18 18 18 00 00 00 00 00 00 00 00 00
- ' $1da0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $1db0: 18 18 18 18 18 18 7e 7e 7e 7e 7e 18 18 18 18 18
- ' $1dc0: 18 18 18 18 18 18 18 18 18 00 00 00 00 00 18 18
- ' $1dd0: 18 18 18 18 7e 7e 7e 7e 7e 18 18 18 18 18 18 18
- ' $1de0: 18 18 18 18 18 18 18 00 00 00 00 00 00 00 00 00
- ' $1df0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $1e00: ff ff ff ff ff ff 81 ff ff ff ff ff ff ff ff ff
- ' $1e10: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
- ' $1e20: ff ff ff ff 81 ff ff ff ff ff ff ff ff ff ff ff
- ' $1e30: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
- ' $1e40: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
- ' $1e50: 18 18 18 18 18 7e 7e 7e 7e 18 18 18 18 18 18 18
- ' $1e60: 18 18 18 18 18 18 18 18 18 00 00 00 00 00 18 18
- ' $1e70: 18 18 18 7e 7e 7e 7e 18 18 18 18 18 18 18 18 18
- ' $1e80: 18 18 18 18 18 18 18 00 00 00 00 00 00 00 00 00
- ' $1e90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $1ea0: 18 18 18 18 18 7e 7e 7e 7e 18 18 18 18 18 18 18
- ' $1eb0: 18 18 18 18 18 18 18 18 18 00 00 00 00 00 18 18
- ' $1ec0: 18 18 18 7e 7e 7e 7e 18 18 18 18 18 18 18 18 18
- ' $1ed0: 18 18 18 18 18 18 18 00 00 00 00 00 00 00 00 00
- ' $1ee0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $1ef0: 18 18 18 7e 7e 7e 7e 18 18 18 18 18 18 18 18 18
- ' $1f00: 18 18 18 18 18 18 18 18 18 00 00 00 00 00 18 18
- ' $1f10: 18 7e 7e 7e 7e 18 18 18 18 18 18 18 18 18 18 18
- ' $1f20: 18 18 18 18 18 18 18 00 00 00 00 00 00 00 00 00
- ' $1f30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $1f40: 18 18 18 7e 7e 7e 7e 18 18 18 18 18 18 18 18 18
- ' $1f50: 18 18 18 18 18 18 18 18 18 00 00 00 00 00 18 18
- ' $1f60: 18 7e 7e 7e 7e 18 18 18 18 18 18 18 18 18 18 18
- ' $1f70: 18 18 18 18 18 18 18 00 00 00 00 00 00 00 00 00
- ' $1f80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $1f90: ff ff ff 81 ff ff ff ff ff ff ff ff ff ff ff ff
- ' $1fa0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
- ' $1fb0: ff 81 ff ff ff ff ff ff ff ff ff ff ff ff ff ff
- ' $1fc0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
- ' $1fd0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
- ' $1fe0: 18 7e 7e 7e 7e 18 18 18 18 18 18 18 18 18 18 18
- ' $1ff0: 18 18 18 18 18 18 18 18 18 00 00 00 00 00 18 7e
- ' $2000: 7e 7e 7e 18 18 18 18 18 18 18 18 18 18 18 18 18
- ' $2010: 18 18 18 18 18 18 18 00 00 00 00 00 00 00 00 00
- ' $2020: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $2030: 18 00 7e 7e 7e 18 18 18 18 18 18 18 18 18 18 18
- ' $2040: 18 18 18 18 18 18 18 18 18 00 00 00 00 00 18 00
- ' $2050: 7e 7e 7e 18 18 18 18 18 18 18 18 18 18 18 18 18
- ' $2060: 18 18 18 18 18 18 18 00 00 00 00 00 00 00 00 00
- ' $2070: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $2080: 7e 7e 7e 7e 18 18 18 18 18 18 18 18 18 18 18 18
- ' $2090: 18 18 18 18 18 18 18 18 18 00 00 00 00 00 7e 7e
- ' $20a0: 7e 7e 18 18 18 18 18 18 18 18 18 18 18 18 18 18
- ' $20b0: 18 18 18 18 18 18 18 00 00 00 00 00 00 00 00 00
- ' $20c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $20d0: 7e 7e 7e 7e 18 18 18 18 18 18 18 18 18 18 18 18
- ' $20e0: 18 18 18 18 18 18 18 18 18 00 00 00 00 00 7e 7e
- ' $20f0: 7e 7e 18 18 18 18 18 18 18 18 18 18 18 18 18 18
- ' $2100: 18 18 18 18 18 18 18 00 00 00 00 00 00 00 00 00
- ' $2110: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $2120: ff ff 7e 7e 18 18 18 18 18 18 18 18 18 18 18 18
- ' $2130: 18 18 18 18 18 18 18 18 18 00 00 00 00 00 ff ff
- ' $2140: 7e 7e 18 18 18 18 18 18 18 18 18 18 18 18 18 18
- ' $2150: 18 18 18 18 18 18 18 00 00 00 00 00 00 00 00 00
- ' $2160: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $2170: 7e 7e 18 18 18 18 18 18 18 18 18 18 18 18 18 18
- ' $2180: 18 18 18 18 18 18 18 18 18 00 00 00 00 00 7e 7e
- ' $2190: 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18
- ' $21a0: 18 18 18 18 18 18 18 00 00 00 00 00 00 00 00 00
- ' $21b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $21c0: 7e 7e 18 18 18 18 18 18 18 18 18 18 18 18 18 18
- ' $21d0: 18 18 18 18 18 18 18 18 18 00 00 00 00 00 7e 7e
- ' $21e0: 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18
- ' $21f0: 18 18 18 18 18 18 18 00 00 00 00 00 00 00 00 00
- ' $2200: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $2210: 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18
- ' $2220: 18 18 18 18 18 18 18 18 18 00 00 00 00 00 18 18
- ' $2230: 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18
- ' $2240: 18 18 18 18 18 18 18 00 00 00 00 00 00 00 00 00
- ' $2250: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $2260: 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18
- ' $2270: 18 18 18 18 18 18 18 18 18 00 00 00 00 00 18 18
- ' $2280: 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18
- ' $2290: 18 18 18 18 18 18 18 00 00 00 00 00 00 00 00 00
- ' $22a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $22b0: 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18
- ' $22c0: 18 18 18 18 18 18 18 18 18 00 00 00 00 00 18 18
- ' $22d0: 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18
- ' $22e0: 18 18 18 18 18 18 18 00 00 00 00 00 00 00 00 00
- ' $22f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $2300: 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18
- ' $2310: 18 18 18 18 18 18 18 18 18 00 00 00 00 00 18 18
- ' $2320: 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18
- ' $2330: 18 18 18 18 18 18 18 00 00 00 00 00 00 00 00 00
- ' $2340: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $2350: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
- ' $2360: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
- ' $2370: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
- ' $2380: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
- ' $2390: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
- ' $23a0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
- ' $23b0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
- ' $23c0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
- ' $23d0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
- ' $23e0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
- ' $23f0: 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18
- ' $2400: 18 18 18 18 18 18 18 18 18 00 00 00 00 00 18 18
- ' $2410: 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18
- ' $2420: 18 18 18 18 18 18 18 00 00 00 00 00 00 00 00 00
- ' $2430: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $2440: 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18
- ' $2450: 18 18 18 18 18 18 18 18 18 00 00 00 00 00 18 18
- ' $2460: 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18
- ' $2470: 18 18 18 18 18 18 18 00 00 00 00 00 00 00 00 00
- ' $2480: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $2490: 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18
- ' $24a0: 18 18 18 18 18 18 18 18 7e 00 00 00 00 00 18 18
- ' $24b0: 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18
- ' $24c0: 18 18 18 18 18 18 7e 00 00 00 00 00 00 00 00 00
- ' $24d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $24e0: 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18
- ' $24f0: 18 18 18 18 18 18 18 18 42 00 00 00 00 00 18 18
- ' $2500: 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18
- ' $2510: 18 18 18 18 18 18 42 00 00 00 00 00 00 00 00 00
- ' $2520: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $2530: 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18
- ' $2540: 18 18 18 18 18 18 7e 18 ff 00 00 00 00 00 18 18
- ' $2550: 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18
- ' $2560: 18 18 18 18 7e 18 ff 00 00 00 00 00 00 00 00 00
- ' $2570: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $2580: 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18
- ' $2590: 18 18 18 18 18 18 7e 7e 42 00 00 00 00 00 18 18
- ' $25a0: 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18
- ' $25b0: 18 18 18 18 7e 7e 42 00 00 00 00 00 00 00 00 00
- ' $25c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $25d0: 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18
- ' $25e0: 18 18 18 18 18 18 00 42 7e 00 00 00 00 00 18 18
- ' $25f0: 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18
- ' $2600: 18 18 18 18 00 42 7e 00 00 00 00 00 00 00 00 00
- ' $2610: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $2620: 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18
- ' $2630: 18 18 18 18 7e 7e 7e 42 18 00 00 00 00 00 18 18
- ' $2640: 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18
- ' $2650: 18 18 7e 7e 7e 42 18 00 00 00 00 00 00 00 00 00
- ' $2660: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $2670: 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18
- ' $2680: 18 18 18 18 7e 42 42 42 18 00 00 00 00 00 18 18
- ' $2690: 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18
- ' $26a0: 18 18 7e 42 42 42 18 00 00 00 00 00 00 00 00 00
- ' $26b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $26c0: 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18
- ' $26d0: 18 18 7e 18 00 ff ff ff ff 00 00 00 00 00 18 18
- ' $26e0: 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18
- ' $26f0: 7e 18 00 ff ff ff ff 00 00 00 00 00 00 00 00 00
- ' $2700: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $2710: 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18
- ' $2720: 18 18 7e 7e 7e 42 42 18 18 00 00 00 00 00 18 18
- ' $2730: 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18
- ' $2740: 7e 7e 7e 42 42 18 18 00 00 00 00 00 00 00 00 00
- ' $2750: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $2760: 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18
- ' $2770: 18 18 00 42 42 7e 7e 18 18 00 00 00 00 00 18 18
- ' $2780: 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18
- ' $2790: 00 42 42 7e 7e 18 18 00 00 00 00 00 00 00 00 00
- ' $27a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $27b0: 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18
- ' $27c0: 18 7e 7e 42 42 18 18 18 18 00 00 00 00 00 18 18
- ' $27d0: 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 7e
- ' $27e0: 7e 42 42 18 18 18 18 00 00 00 00 00 00 00 00 00
- ' $27f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $2800: 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18
- ' $2810: 18 42 42 42 42 18 18 18 18 00 00 00 00 00 18 18
- ' $2820: 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 42
- ' $2830: 42 42 42 18 18 18 18 00 00 00 00 00 00 00 00 00
- ' $2840: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $2850: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
- ' $2860: ff c3 c3 ff ff ff ff ff ff ff ff ff ff ff ff ff
- ' $2870: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff c3
- ' $2880: c3 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
- ' $2890: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
- ' $28a0: 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 7e
- ' $28b0: 7e 42 42 18 18 18 18 18 18 00 00 00 00 00 18 18
- ' $28c0: 18 18 18 18 18 18 18 18 18 18 18 18 18 7e 7e 42
- ' $28d0: 42 18 18 18 18 18 18 00 00 00 00 00 00 00 00 00
- ' $28e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $28f0: 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 00
- ' $2900: 42 7e 7e 18 18 18 18 18 18 00 00 00 00 00 18 18
- ' $2910: 18 18 18 18 18 18 18 18 18 18 18 18 18 00 42 7e
- ' $2920: 7e 18 18 18 18 18 18 00 00 00 00 00 00 00 00 00
- ' $2930: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $2940: 18 18 18 18 18 18 18 18 18 18 18 18 18 7e 7e 7e
- ' $2950: 42 18 18 18 18 18 18 18 18 00 00 00 00 00 18 18
- ' $2960: 18 18 18 18 18 18 18 18 18 18 18 7e 7e 7e 42 18
- ' $2970: 18 18 18 18 18 18 18 00 00 00 00 00 00 00 00 00
- ' $2980: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $2990: 18 18 18 18 18 18 18 18 18 18 18 18 18 7e 42 42
- ' $29a0: 42 18 18 18 18 18 18 18 18 00 00 00 00 00 18 18
- ' $29b0: 18 18 18 18 18 18 18 18 18 18 18 7e 42 42 42 18
- ' $29c0: 18 18 18 18 18 18 18 00 00 00 00 00 00 00 00 00
- ' $29d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $29e0: ff ff ff ff ff ff ff ff ff ff ff ff ff 81 c3 c3
- ' $29f0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
- ' $2a00: ff ff ff ff ff ff ff ff ff ff ff 81 c3 c3 ff ff
- ' $2a10: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
- ' $2a20: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
- ' $2a30: 18 18 18 18 18 18 18 18 18 18 18 18 7e 7e 42 42
- ' $2a40: 18 18 18 18 18 18 18 18 18 00 00 00 00 00 18 18
- ' $2a50: 18 18 18 18 18 18 18 18 18 18 7e 7e 42 42 18 18
- ' $2a60: 18 18 18 18 18 18 18 00 00 00 00 00 00 00 00 00
- ' $2a70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $2a80: 18 18 18 18 18 18 18 18 18 18 18 18 42 42 7e 7e
- ' $2a90: 18 18 18 18 18 18 18 18 18 00 00 00 00 00 18 18
- ' $2aa0: 18 18 18 18 18 18 18 18 18 18 42 42 7e 7e 18 18
- ' $2ab0: 18 18 18 18 18 18 18 00 00 00 00 00 00 00 00 00
- ' $2ac0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $2ad0: 18 18 18 18 18 18 18 18 18 18 7e 7e 42 42 18 18
- ' $2ae0: 18 18 18 18 18 18 18 18 18 00 00 00 00 00 18 18
- ' $2af0: 18 18 18 18 18 18 18 18 7e 7e 42 42 18 18 18 18
- ' $2b00: 18 18 18 18 18 18 18 00 00 00 00 00 00 00 00 00
- ' $2b10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $2b20: 18 18 18 18 18 18 18 18 18 18 7e 42 42 42 18 18
- ' $2b30: 18 18 18 18 18 18 18 18 18 00 00 00 00 00 18 18
- ' $2b40: 18 18 18 18 18 18 18 18 7e 42 42 42 18 18 18 18
- ' $2b50: 18 18 18 18 18 18 18 00 00 00 00 00 00 00 00 00
- ' $2b60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $2b70: ff ff ff ff ff ff ff ff ff ff 81 c3 ff ff ff ff
- ' $2b80: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
- ' $2b90: ff ff ff ff ff ff ff ff 81 c3 ff ff ff ff ff ff
- ' $2ba0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
- ' $2bb0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
- ' $2bc0: 18 18 18 18 18 18 18 18 7e 7e 7e 42 18 18 18 18
- ' $2bd0: 18 18 18 18 18 18 18 18 18 00 00 00 00 00 18 18
- ' $2be0: 18 18 18 18 18 18 7e 7e 7e 42 18 18 18 18 18 18
- ' $2bf0: 18 18 18 18 18 18 18 00 00 00 00 00 00 00 00 00
- ' $2c00: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $2c10: 18 18 18 18 18 18 18 18 00 42 42 7e 18 18 18 18
- ' $2c20: 18 18 18 18 18 18 18 18 18 00 00 00 00 00 18 18
- ' $2c30: 18 18 18 18 18 18 00 42 42 7e 18 18 18 18 18 18
- ' $2c40: 18 18 18 18 18 18 18 00 00 00 00 00 00 00 00 00
- ' $2c50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $2c60: 18 18 18 18 18 18 7e 7e 7e 42 42 18 18 18 18 18
- ' $2c70: 18 18 18 18 18 18 18 18 18 00 00 00 00 00 18 18
- ' $2c80: 18 18 18 18 7e 7e 7e 42 42 18 18 18 18 18 18 18
- ' $2c90: 18 18 18 18 18 18 18 00 00 00 00 00 00 00 00 00
- ' $2ca0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $2cb0: 18 18 18 18 18 18 7e 42 42 42 42 18 18 18 18 18
- ' $2cc0: 18 18 18 18 18 18 18 18 18 00 00 00 00 00 18 18
- ' $2cd0: 18 18 18 18 7e 42 42 42 42 18 18 18 18 18 18 18
- ' $2ce0: 18 18 18 18 18 18 18 00 00 00 00 00 00 00 00 00
- ' $2cf0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $2d00: ff ff ff ff ff ff 81 c3 c3 ff ff ff ff ff ff ff
- ' $2d10: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
- ' $2d20: ff ff ff ff 81 c3 c3 ff ff ff ff ff ff ff ff ff
- ' $2d30: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
- ' $2d40: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
- ' $2d50: 18 18 18 18 18 7e 7e 42 42 18 18 18 18 18 18 18
- ' $2d60: 18 18 18 18 18 18 18 18 18 00 00 00 00 00 18 18
- ' $2d70: 18 18 18 7e 7e 42 42 18 18 18 18 18 18 18 18 18
- ' $2d80: 18 18 18 18 18 18 18 00 00 00 00 00 00 00 00 00
- ' $2d90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $2da0: 18 18 18 18 18 42 42 7e 7e 18 18 18 18 18 18 18
- ' $2db0: 18 18 18 18 18 18 18 18 18 00 00 00 00 00 18 18
- ' $2dc0: 18 18 18 42 42 7e 7e 18 18 18 18 18 18 18 18 18
- ' $2dd0: 18 18 18 18 18 18 18 00 00 00 00 00 00 00 00 00
- ' $2de0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $2df0: 18 18 18 7e 7e 42 42 18 18 18 18 18 18 18 18 18
- ' $2e00: 18 18 18 18 18 18 18 18 18 00 00 00 00 00 18 18
- ' $2e10: 18 7e 7e 42 42 18 18 18 18 18 18 18 18 18 18 18
- ' $2e20: 18 18 18 18 18 18 18 00 00 00 00 00 00 00 00 00
- ' $2e30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $2e40: 18 18 18 7e 42 42 42 18 18 18 18 18 18 18 18 18
- ' $2e50: 18 18 18 18 18 18 18 18 18 00 00 00 00 00 18 18
- ' $2e60: 18 7e 42 42 42 18 18 18 18 18 18 18 18 18 18 18
- ' $2e70: 18 18 18 18 18 18 18 00 00 00 00 00 00 00 00 00
- ' $2e80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $2e90: ff ff ff 81 c3 ff ff ff ff ff ff ff ff ff ff ff
- ' $2ea0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
- ' $2eb0: ff 81 c3 ff ff ff ff ff ff ff ff ff ff ff ff ff
- ' $2ec0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
- ' $2ed0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
- ' $2ee0: 18 7e 7e 7e 42 18 18 18 18 18 18 18 18 18 18 18
- ' $2ef0: 18 18 18 18 18 18 18 18 18 00 00 00 00 00 18 7e
- ' $2f00: 7e 7e 42 18 18 18 18 18 18 18 18 18 18 18 18 18
- ' $2f10: 18 18 18 18 18 18 18 00 00 00 00 00 00 00 00 00
- ' $2f20: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $2f30: 18 00 42 42 7e 18 18 18 18 18 18 18 18 18 18 18
- ' $2f40: 18 18 18 18 18 18 18 18 18 00 00 00 00 00 18 00
- ' $2f50: 42 42 7e 18 18 18 18 18 18 18 18 18 18 18 18 18
- ' $2f60: 18 18 18 18 18 18 18 00 00 00 00 00 00 00 00 00
- ' $2f70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $2f80: 7e 7e 42 42 18 18 18 18 18 18 18 18 18 18 18 18
- ' $2f90: 18 18 18 18 18 18 18 18 18 00 00 00 00 00 7e 7e
- ' $2fa0: 42 42 18 18 18 18 18 18 18 18 18 18 18 18 18 18
- ' $2fb0: 18 18 18 18 18 18 18 00 00 00 00 00 00 00 00 00
- ' $2fc0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $2fd0: 42 42 42 42 18 18 18 18 18 18 18 18 18 18 18 18
- ' $2fe0: 18 18 18 18 18 18 18 18 18 00 00 00 00 00 42 42
- ' $2ff0: 42 42 18 18 18 18 18 18 18 18 18 18 18 18 18 18
- ' $3000: 18 18 18 18 18 18 18 00 00 00 00 00 00 00 00 00
- ' $3010: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $3020: ff ff 7e 7e 18 18 18 18 18 18 18 18 18 18 18 18
- ' $3030: 18 18 18 18 18 18 18 18 18 00 00 00 00 00 ff ff
- ' $3040: 7e 7e 18 18 18 18 18 18 18 18 18 18 18 18 18 18
- ' $3050: 18 18 18 18 18 18 18 00 00 00 00 00 00 00 00 00
- ' $3060: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $3070: 42 42 18 18 18 18 18 18 18 18 18 18 18 18 18 18
- ' $3080: 18 18 18 18 18 18 18 18 18 00 00 00 00 00 42 42
- ' $3090: 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18
- ' $30a0: 18 18 18 18 18 18 18 00 00 00 00 00 00 00 00 00
- ' $30b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $30c0: 7e 7e 18 18 18 18 18 18 18 18 18 18 18 18 18 18
- ' $30d0: 18 18 18 18 18 18 18 18 18 00 00 00 00 00 7e 7e
- ' $30e0: 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18
- ' $30f0: 18 18 18 18 18 18 18 00 00 00 00 00 00 00 00 00
- ' $3100: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $3110: 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18
- ' $3120: 18 18 18 18 18 18 18 18 18 00 00 00 00 00 18 18
- ' $3130: 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18
- ' $3140: 18 18 18 18 18 18 18 00 00 00 00 00 00 00 00 00
- ' $3150: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $3160: 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18
- ' $3170: 18 18 18 18 18 18 18 18 18 00 00 00 00 00 18 18
- ' $3180: 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18
- ' $3190: 18 18 18 18 18 18 18 00 00 00 00 00 00 00 00 00
- ' $31a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $31b0: 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18
- ' $31c0: 18 18 18 18 18 18 18 18 18 00 00 00 00 00 18 18
- ' $31d0: 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18
- ' $31e0: 18 18 18 18 18 18 18 00 00 00 00 00 00 00 00 00
- ' $31f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $3200: 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18
- ' $3210: 18 18 18 18 18 18 18 18 18 00 00 00 00 00 18 18
- ' $3220: 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18
- ' $3230: 18 18 18 18 18 18 18 00 00 00 00 00 00 00 00 00
- ' $3240: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $3250: 5d 5d 5d 5d 5d 5d 5d 5d 5d 5d 5d 5d 5d 5d 5d 5d
- ' $3260: 5d 5d 5d 5d 5d 5d 5d 5d 5d 55 55 55 55 55 5d 5d
- ' $3270: 5d 5d 5d 5d 5d 5d 5d 5d 5d 5d 5d 5d 5d 5d 5d 5d
- ' $3280: 5d 5d 5d 5d 5d 5d 5d 55 55 55 55 55 55 55 55 55
- ' $3290: 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55
- ' $32a0: 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55
- ' $32b0: 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55
- ' $32c0: 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55
- ' $32d0: 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55
- ' $32e0: 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55
- ' $32f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $3300: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 08 08
- ' $3310: 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08
- ' $3320: 08 08 08 08 08 08 08 00 00 00 00 00 00 00 00 00
- ' $3330: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $3340: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $3350: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 08 08
- ' $3360: 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08
- ' $3370: 08 08 08 08 08 08 08 00 00 00 00 00 00 00 00 00
- ' $3380: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $3390: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $33a0: 00 00 00 00 00 00 00 00 7e 00 00 00 00 00 08 08
- ' $33b0: 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08
- ' $33c0: 08 08 08 08 08 08 7e 00 00 00 00 00 00 00 00 00
- ' $33d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $33e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $33f0: 00 00 00 00 00 00 00 00 42 00 00 00 00 00 08 08
- ' $3400: 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08
- ' $3410: 08 08 08 08 08 08 42 00 00 00 00 00 00 00 00 00
- ' $3420: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $3430: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $3440: 00 00 00 00 00 00 7e 00 ff 00 00 00 00 00 08 08
- ' $3450: 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08
- ' $3460: 08 08 08 08 7e 08 ff 00 00 00 00 00 00 00 00 00
- ' $3470: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $3480: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $3490: 00 00 00 00 00 00 7e 7e 42 00 00 00 00 00 08 08
- ' $34a0: 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08
- ' $34b0: 08 08 08 08 7e 7e 42 00 00 00 00 00 00 00 00 00
- ' $34c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $34d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $34e0: 00 00 00 00 00 00 00 42 7e 00 00 00 00 00 08 08
- ' $34f0: 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08
- ' $3500: 08 08 08 08 00 42 7e 00 00 00 00 00 00 00 00 00
- ' $3510: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $3520: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $3530: 00 00 00 00 7e 7e 7e 42 08 00 00 00 00 00 08 08
- ' $3540: 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08
- ' $3550: 08 08 7e 7e 7e 42 00 00 00 00 00 00 00 00 00 00
- ' $3560: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $3570: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $3580: 00 00 00 00 7e 42 42 42 08 00 00 00 00 00 08 08
- ' $3590: 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08
- ' $35a0: 08 08 7e 42 42 42 00 00 00 00 00 00 00 00 00 00
- ' $35b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $35c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $35d0: 00 00 7e 00 00 ff ff ff ff 00 00 00 00 00 08 08
- ' $35e0: 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08
- ' $35f0: 7e 08 00 ff ff ff ff 00 00 00 00 00 00 00 00 00
- ' $3600: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $3610: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $3620: 00 00 7e 7e 7e 42 42 08 08 00 00 00 00 00 08 08
- ' $3630: 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08
- ' $3640: 7e 7e 7e 42 42 00 00 00 00 00 00 00 00 00 00 00
- ' $3650: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $3660: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $3670: 00 00 00 42 42 7e 7e 08 08 00 00 00 00 00 08 08
- ' $3680: 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08
- ' $3690: 00 42 42 7e 7e 00 00 00 00 00 00 00 00 00 00 00
- ' $36a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $36b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $36c0: 00 7e 7e 42 42 08 08 08 08 00 00 00 00 00 08 08
- ' $36d0: 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 7e
- ' $36e0: 7e 42 42 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $36f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $3700: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $3710: 00 42 42 42 42 08 08 08 08 00 00 00 00 00 08 08
- ' $3720: 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 42
- ' $3730: 42 42 42 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $3740: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $3750: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
- ' $3760: ff c3 c3 ff ff ff ff ff ff ff ff ff ff ff ff ff
- ' $3770: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff c3
- ' $3780: c3 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
- ' $3790: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
- ' $37a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 7e
- ' $37b0: 7e 42 42 08 08 08 08 08 08 00 00 00 00 00 08 08
- ' $37c0: 08 08 08 08 08 08 08 08 08 08 08 08 08 7e 7e 42
- ' $37d0: 42 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $37e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $37f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $3800: 42 7e 7e 08 08 08 08 08 08 00 00 00 00 00 08 08
- ' $3810: 08 08 08 08 08 08 08 08 08 08 08 08 08 00 42 7e
- ' $3820: 7e 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $3830: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $3840: 00 00 00 00 00 00 00 00 00 00 00 00 00 7e 7e 7e
- ' $3850: 42 08 08 08 08 08 08 08 08 00 00 00 00 00 08 08
- ' $3860: 08 08 08 08 08 08 08 08 08 08 08 7e 7e 7e 42 00
- ' $3870: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $3880: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $3890: 00 00 00 00 00 00 00 00 00 00 00 00 00 7e 42 42
- ' $38a0: 42 08 08 08 08 08 08 08 08 00 00 00 00 00 08 08
- ' $38b0: 08 08 08 08 08 08 08 08 08 08 08 7e 42 42 42 00
- ' $38c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $38d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $38e0: ff ff ff ff ff ff ff ff ff ff ff ff ff 81 c3 c3
- ' $38f0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
- ' $3900: ff ff ff ff ff ff ff ff ff ff ff 81 c3 c3 ff ff
- ' $3910: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
- ' $3920: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
- ' $3930: 00 00 00 00 00 00 00 00 00 00 00 00 7e 7e 42 42
- ' $3940: 08 08 08 08 08 08 08 08 08 00 00 00 00 00 08 08
- ' $3950: 08 08 08 08 08 08 08 08 08 08 7e 7e 42 42 00 00
- ' $3960: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $3970: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $3980: 00 00 00 00 00 00 00 00 00 00 00 00 42 42 7e 7e
- ' $3990: 08 08 08 08 08 08 08 08 08 00 00 00 00 00 08 08
- ' $39a0: 08 08 08 08 08 08 08 08 08 08 42 42 7e 7e 00 00
- ' $39b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $39c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $39d0: 00 00 00 00 00 00 00 00 00 00 7e 7e 42 42 08 08
- ' $39e0: 08 08 08 08 08 08 08 08 08 00 00 00 00 00 08 08
- ' $39f0: 08 08 08 08 08 08 08 08 7e 7e 42 42 00 00 00 00
- ' $3a00: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $3a10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $3a20: 00 00 00 00 00 00 00 00 00 00 7e 42 42 42 08 08
- ' $3a30: 08 08 08 08 08 08 08 08 08 00 00 00 00 00 08 08
- ' $3a40: 08 08 08 08 08 08 08 08 7e 42 42 42 00 00 00 00
- ' $3a50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $3a60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $3a70: ff ff ff ff ff ff ff ff ff ff 81 c3 ff ff ff ff
- ' $3a80: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
- ' $3a90: ff ff ff ff ff ff ff ff 81 c3 ff ff ff ff ff ff
- ' $3aa0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
- ' $3ab0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
- ' $3ac0: 00 00 00 00 00 00 00 00 7e 7e 7e 42 08 08 08 08
- ' $3ad0: 08 08 08 08 08 08 08 08 08 00 00 00 00 00 08 08
- ' $3ae0: 08 08 08 08 08 08 7e 7e 7e 42 00 00 00 00 00 00
- ' $3af0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $3b00: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $3b10: 00 00 00 00 00 00 00 00 00 42 42 7e 08 08 08 08
- ' $3b20: 08 08 08 08 08 08 08 08 08 00 00 00 00 00 08 08
- ' $3b30: 08 08 08 08 08 08 00 42 42 7e 00 00 00 00 00 00
- ' $3b40: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $3b50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $3b60: 00 00 00 00 00 00 7e 7e 7e 42 42 08 08 08 08 08
- ' $3b70: 08 08 08 08 08 08 08 08 08 00 00 00 00 00 08 08
- ' $3b80: 08 08 08 08 7e 7e 7e 42 42 00 00 00 00 00 00 00
- ' $3b90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $3ba0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $3bb0: 00 00 00 00 00 00 7e 42 42 42 42 08 08 08 08 08
- ' $3bc0: 08 08 08 08 08 08 08 08 08 00 00 00 00 00 08 08
- ' $3bd0: 08 08 08 08 7e 42 42 42 42 00 00 00 00 00 00 00
- ' $3be0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $3bf0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $3c00: ff ff ff ff ff ff 81 c3 c3 ff ff ff ff ff ff ff
- ' $3c10: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
- ' $3c20: ff ff ff ff 81 c3 c3 ff ff ff ff ff ff ff ff ff
- ' $3c30: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
- ' $3c40: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
- ' $3c50: 00 00 00 00 00 7e 7e 42 42 08 08 08 08 08 08 08
- ' $3c60: 08 08 08 08 08 08 08 08 08 00 00 00 00 00 08 08
- ' $3c70: 08 08 08 7e 7e 42 42 00 00 00 00 00 00 00 00 00
- ' $3c80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $3c90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $3ca0: 00 00 00 00 00 42 42 7e 7e 08 08 08 08 08 08 08
- ' $3cb0: 08 08 08 08 08 08 08 08 08 00 00 00 00 00 08 08
- ' $3cc0: 08 08 08 42 42 7e 7e 00 00 00 00 00 00 00 00 00
- ' $3cd0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $3ce0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $3cf0: 00 00 00 7e 7e 42 42 08 08 08 08 08 08 08 08 08
- ' $3d00: 08 08 08 08 08 08 08 08 08 00 00 00 00 00 08 08
- ' $3d10: 08 7e 7e 42 42 00 00 00 00 00 00 00 00 00 00 00
- ' $3d20: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $3d30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $3d40: 00 00 00 7e 42 42 42 08 08 08 08 08 08 08 08 08
- ' $3d50: 08 08 08 08 08 08 08 08 08 00 00 00 00 00 08 08
- ' $3d60: 08 7e 42 42 42 00 00 00 00 00 00 00 00 00 00 00
- ' $3d70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $3d80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $3d90: ff ff ff 81 c3 ff ff ff ff ff ff ff ff ff ff ff
- ' $3da0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
- ' $3db0: ff 81 c3 ff ff ff ff ff ff ff ff ff ff ff ff ff
- ' $3dc0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
- ' $3dd0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
- ' $3de0: 00 7e 7e 7e 42 08 08 08 08 08 08 08 08 08 08 08
- ' $3df0: 08 08 08 08 08 08 08 08 08 00 00 00 00 00 08 7e
- ' $3e00: 7e 7e 42 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $3e10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $3e20: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $3e30: 00 00 42 42 7e 08 08 08 08 08 08 08 08 08 08 08
- ' $3e40: 08 08 08 08 08 08 08 08 08 00 00 00 00 00 08 00
- ' $3e50: 42 42 7e 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $3e60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $3e70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $3e80: 7e 7e 42 42 08 08 08 08 08 08 08 08 08 08 08 08
- ' $3e90: 08 08 08 08 08 08 08 08 08 00 00 00 00 00 7e 7e
- ' $3ea0: 42 42 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $3eb0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $3ec0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $3ed0: 42 42 42 42 08 08 08 08 08 08 08 08 08 08 08 08
- ' $3ee0: 08 08 08 08 08 08 08 08 08 00 00 00 00 00 42 42
- ' $3ef0: 42 42 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $3f00: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $3f10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $3f20: ff ff 7e 7e 08 08 08 08 08 08 08 08 08 08 08 08
- ' $3f30: 08 08 08 08 08 08 08 08 08 00 00 00 00 00 ff ff
- ' $3f40: 7e 7e 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $3f50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $3f60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $3f70: 42 42 08 08 08 08 08 08 08 08 08 08 08 08 08 08
- ' $3f80: 08 08 08 08 08 08 08 08 08 00 00 00 00 00 42 42
- ' $3f90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $3fa0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $3fb0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $3fc0: 7e 7e 08 08 08 08 08 08 08 08 08 08 08 08 08 08
- ' $3fd0: 08 08 08 08 08 08 08 08 08 00 00 00 00 00 7e 7e
- ' $3fe0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $3ff0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $4000: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $4010: 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08
- ' $4020: 08 08 08 08 08 08 08 08 08 00 00 00 00 00 00 00
- ' $4030: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $4040: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $4050: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $4060: 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08
- ' $4070: 08 08 08 08 08 08 08 08 08 00 00 00 00 00 00 00
- ' $4080: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $4090: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $40a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $40b0: 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08
- ' $40c0: 08 08 08 08 08 08 08 08 08 00 00 00 00 00 00 00
- ' $40d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $40e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $40f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $4100: 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08
- ' $4110: 08 08 08 08 08 08 08 08 08 00 00 00 00 00 00 00
- ' $4120: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $4130: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $4140: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $4150: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
- ' $4160: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
- ' $4170: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
- ' $4180: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
- ' $4190: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
- ' $41a0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
- ' $41b0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
- ' $41c0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
- ' $41d0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
- ' $41e0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
- ' $41f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $4200: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 08 08
- ' $4210: 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08
- ' $4220: 08 08 08 08 08 08 08 00 00 00 00 00 00 00 00 00
- ' $4230: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $4240: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $4250: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 08 08
- ' $4260: 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08
- ' $4270: 08 08 08 08 08 08 08 00 00 00 00 00 00 00 00 00
- ' $4280: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $4290: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $42a0: 00 00 00 00 00 00 00 00 7e 00 00 00 00 00 08 08
- ' $42b0: 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08
- ' $42c0: 08 08 08 08 08 08 7e 00 00 00 00 00 00 00 00 00
- ' $42d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $42e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $42f0: 00 00 00 00 00 00 00 00 7e 00 00 00 00 00 08 08
- ' $4300: 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08
- ' $4310: 08 08 08 08 08 08 7e 00 00 00 00 00 00 00 00 00
- ' $4320: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $4330: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $4340: 00 00 00 00 00 00 7e 00 ff 00 00 00 00 00 08 08
- ' $4350: 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08
- ' $4360: 08 08 08 08 7e 08 ff 00 00 00 00 00 00 00 00 00
- ' $4370: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $4380: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $4390: 00 00 00 00 00 00 7e 7e 7e 00 00 00 00 00 08 08
- ' $43a0: 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08
- ' $43b0: 08 08 08 08 7e 7e 7e 00 00 00 00 00 00 00 00 00
- ' $43c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $43d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $43e0: 00 00 00 00 00 00 00 7e 7e 00 00 00 00 00 08 08
- ' $43f0: 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08
- ' $4400: 08 08 08 08 00 7e 7e 00 00 00 00 00 00 00 00 00
- ' $4410: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $4420: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $4430: 00 00 00 00 7e 7e 7e 7e 00 00 00 00 00 00 08 08
- ' $4440: 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08
- ' $4450: 08 08 7e 7e 7e 7e 00 00 00 00 00 00 00 00 00 00
- ' $4460: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $4470: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $4480: 00 00 00 00 7e 7e 7e 7e 7e 00 00 00 00 00 08 08
- ' $4490: 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08
- ' $44a0: 08 08 7e 7e 7e 7e 7e 00 00 00 00 00 00 00 00 00
- ' $44b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $44c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $44d0: 00 00 7e 00 00 ff ff ff ff 00 00 00 00 00 08 08
- ' $44e0: 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08
- ' $44f0: 7e 08 00 ff ff ff ff 00 00 00 00 00 00 00 00 00
- ' $4500: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $4510: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $4520: 00 00 7e 7e 7e 7e 7e 00 08 00 00 00 00 00 08 08
- ' $4530: 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08
- ' $4540: 7e 7e 7e 7e 7e 00 00 00 00 00 00 00 00 00 00 00
- ' $4550: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $4560: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $4570: 00 00 00 7e 7e 7e 7e 7e 08 00 00 00 00 00 08 08
- ' $4580: 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08
- ' $4590: 00 7e 7e 7e 7e 7e 00 00 00 00 00 00 00 00 00 00
- ' $45a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $45b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $45c0: 00 7e 7e 7e 7e 00 00 7e 08 00 00 00 00 00 08 08
- ' $45d0: 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 7e
- ' $45e0: 7e 7e 7e 00 00 7e 00 00 00 00 00 00 00 00 00 00
- ' $45f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $4600: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $4610: 00 7e 7e 7e 7e 7e 7e 08 08 00 00 00 00 00 08 08
- ' $4620: 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 7e
- ' $4630: 7e 7e 7e 7e 7e 00 00 00 00 00 00 00 00 00 00 00
- ' $4640: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $4650: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
- ' $4660: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
- ' $4670: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
- ' $4680: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
- ' $4690: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
- ' $46a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 7e
- ' $46b0: 7e 7e 7e 00 00 08 08 08 08 00 00 00 00 00 08 08
- ' $46c0: 08 08 08 08 08 08 08 08 08 08 08 08 08 7e 7e 7e
- ' $46d0: 7e 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $46e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $46f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $4700: 7e 7e 7e 7e 7e 08 08 08 08 00 00 00 00 00 08 08
- ' $4710: 08 08 08 08 08 08 08 08 08 08 08 08 08 00 7e 7e
- ' $4720: 7e 7e 7e 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $4730: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $4740: 00 00 00 00 00 00 00 00 00 00 00 00 00 7e 7e 7e
- ' $4750: 7e 00 00 7e 7e 08 08 08 08 00 00 00 00 00 08 08
- ' $4760: 08 08 08 08 08 08 08 08 08 08 08 7e 7e 7e 7e 00
- ' $4770: 00 7e 7e 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $4780: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $4790: 00 00 00 00 00 00 00 00 00 00 00 00 00 7e 7e 7e
- ' $47a0: 7e 7e 7e 08 08 08 08 08 08 00 00 00 00 00 08 08
- ' $47b0: 08 08 08 08 08 08 08 08 08 08 08 7e 7e 7e 7e 7e
- ' $47c0: 7e 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $47d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $47e0: ff ff ff ff ff ff ff ff ff ff ff ff ff 81 ff ff
- ' $47f0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
- ' $4800: ff ff ff ff ff ff ff ff ff ff ff 81 ff ff ff ff
- ' $4810: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
- ' $4820: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
- ' $4830: 00 00 00 00 00 00 00 00 00 00 00 00 7e 7e 7e 7e
- ' $4840: 00 08 08 08 08 08 08 08 08 00 00 00 00 00 08 08
- ' $4850: 08 08 08 08 08 08 08 08 08 08 7e 7e 7e 7e 00 00
- ' $4860: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $4870: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $4880: 00 00 00 00 00 00 00 00 00 00 00 00 7e 7e 7e 7e
- ' $4890: 7e 08 08 08 08 08 08 08 08 00 00 00 00 00 08 08
- ' $48a0: 08 08 08 08 08 08 08 08 08 08 7e 7e 7e 7e 7e 00
- ' $48b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $48c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $48d0: 00 00 00 00 00 00 00 00 00 00 7e 7e 7e 7e 00 00
- ' $48e0: 7e 08 08 08 08 08 08 08 08 00 00 00 00 00 08 08
- ' $48f0: 08 08 08 08 08 08 08 08 7e 7e 7e 7e 00 00 7e 00
- ' $4900: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $4910: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $4920: 00 00 00 00 00 00 00 00 00 00 7e 7e 7e 7e 7e 7e
- ' $4930: 08 08 08 08 08 08 08 08 08 00 00 00 00 00 08 08
- ' $4940: 08 08 08 08 08 08 08 08 7e 7e 7e 7e 7e 7e 00 00
- ' $4950: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $4960: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $4970: ff ff ff ff ff ff ff ff ff ff 81 ff ff ff ff ff
- ' $4980: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
- ' $4990: ff ff ff ff ff ff ff ff 81 ff ff ff ff ff ff ff
- ' $49a0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
- ' $49b0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
- ' $49c0: 00 00 00 00 00 00 00 00 7e 7e 7e 7e 00 00 08 08
- ' $49d0: 08 08 08 08 08 08 08 08 08 00 00 00 00 00 08 08
- ' $49e0: 08 08 08 08 08 08 7e 7e 7e 7e 00 00 00 00 00 00
- ' $49f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $4a00: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $4a10: 00 00 00 00 00 00 00 00 00 7e 7e 7e 7e 7e 08 08
- ' $4a20: 08 08 08 08 08 08 08 08 08 00 00 00 00 00 08 08
- ' $4a30: 08 08 08 08 08 08 00 7e 7e 7e 7e 7e 00 00 00 00
- ' $4a40: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $4a50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $4a60: 00 00 00 00 00 00 7e 7e 7e 7e 7e 00 7e 7e 08 08
- ' $4a70: 08 08 08 08 08 08 08 08 08 00 00 00 00 00 08 08
- ' $4a80: 08 08 08 08 7e 7e 7e 7e 7e 00 7e 7e 00 00 00 00
- ' $4a90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $4aa0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $4ab0: 00 00 00 00 00 00 7e 7e 7e 7e 7e 7e 08 08 08 08
- ' $4ac0: 08 08 08 08 08 08 08 08 08 00 00 00 00 00 08 08
- ' $4ad0: 08 08 08 08 7e 7e 7e 7e 7e 7e 00 00 00 00 00 00
- ' $4ae0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $4af0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $4b00: ff ff ff ff ff ff 81 ff ff ff ff ff ff ff ff ff
- ' $4b10: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
- ' $4b20: ff ff ff ff 81 ff ff ff ff ff ff ff ff ff ff ff
- ' $4b30: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
- ' $4b40: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
- ' $4b50: 00 00 00 00 00 7e 7e 7e 7e 00 00 08 08 08 08 08
- ' $4b60: 08 08 08 08 08 08 08 08 08 00 00 00 00 00 08 08
- ' $4b70: 08 08 08 7e 7e 7e 7e 00 00 00 00 00 00 00 00 00
- ' $4b80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $4b90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $4ba0: 00 00 00 00 00 7e 7e 7e 7e 7e 7e 08 08 08 08 08
- ' $4bb0: 08 08 08 08 08 08 08 08 08 00 00 00 00 00 08 08
- ' $4bc0: 08 08 08 7e 7e 7e 7e 7e 7e 00 00 00 00 00 00 00
- ' $4bd0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $4be0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $4bf0: 00 00 00 7e 7e 7e 7e 00 00 7e 7e 08 08 08 08 08
- ' $4c00: 08 08 08 08 08 08 08 08 08 00 00 00 00 00 08 08
- ' $4c10: 08 7e 7e 7e 7e 00 00 7e 7e 00 00 00 00 00 00 00
- ' $4c20: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $4c30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $4c40: 00 00 00 7e 7e 7e 7e 7e 7e 08 08 08 08 08 08 08
- ' $4c50: 08 08 08 08 08 08 08 08 08 00 00 00 00 00 08 08
- ' $4c60: 08 7e 7e 7e 7e 7e 7e 00 00 00 00 00 00 00 00 00
- ' $4c70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $4c80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $4c90: ff ff ff 81 ff ff ff ff ff ff ff ff ff ff ff ff
- ' $4ca0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
- ' $4cb0: ff 81 ff ff ff ff ff ff ff ff ff ff ff ff ff ff
- ' $4cc0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
- ' $4cd0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
- ' $4ce0: 00 7e 7e 7e 7e 00 00 08 08 08 08 08 08 08 08 08
- ' $4cf0: 08 08 08 08 08 08 08 08 08 00 00 00 00 00 08 7e
- ' $4d00: 7e 7e 7e 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $4d10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $4d20: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $4d30: 00 00 7e 7e 7e 7e 7e 08 08 08 08 08 08 08 08 08
- ' $4d40: 08 08 08 08 08 08 08 08 08 00 00 00 00 00 08 00
- ' $4d50: 7e 7e 7e 7e 7e 00 00 00 00 00 00 00 00 00 00 00
- ' $4d60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $4d70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $4d80: 7e 7e 7e 7e 00 7e 7e 08 08 08 08 08 08 08 08 08
- ' $4d90: 08 08 08 08 08 08 08 08 08 00 00 00 00 00 7e 7e
- ' $4da0: 7e 7e 00 7e 7e 00 00 00 00 00 00 00 00 00 00 00
- ' $4db0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $4dc0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $4dd0: 7e 7e 7e 7e 7e 08 08 08 08 08 08 08 08 08 08 08
- ' $4de0: 08 08 08 08 08 08 08 08 08 00 00 00 00 00 7e 7e
- ' $4df0: 7e 7e 7e 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $4e00: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $4e10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $4e20: ff ff 7e 7e 7e 08 08 08 08 08 08 08 08 08 08 08
- ' $4e30: 08 08 08 08 08 08 08 08 08 00 00 00 00 00 ff ff
- ' $4e40: 7e 7e 7e 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $4e50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $4e60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $4e70: 7e 7e 00 00 08 08 08 08 08 08 08 08 08 08 08 08
- ' $4e80: 08 08 08 08 08 08 08 08 08 00 00 00 00 00 7e 7e
- ' $4e90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $4ea0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $4eb0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $4ec0: 7e 7e 7e 7e 08 08 08 08 08 08 08 08 08 08 08 08
- ' $4ed0: 08 08 08 08 08 08 08 08 08 00 00 00 00 00 7e 7e
- ' $4ee0: 7e 7e 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $4ef0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $4f00: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $4f10: 00 00 7e 7e 08 08 08 08 08 08 08 08 08 08 08 08
- ' $4f20: 08 08 08 08 08 08 08 08 08 00 00 00 00 00 00 00
- ' $4f30: 7e 7e 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $4f40: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $4f50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $4f60: 7e 7e 08 08 08 08 08 08 08 08 08 08 08 08 08 08
- ' $4f70: 08 08 08 08 08 08 08 08 08 00 00 00 00 00 7e 7e
- ' $4f80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $4f90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $4fa0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $4fb0: 7e 7e 08 08 08 08 08 08 08 08 08 08 08 08 08 08
- ' $4fc0: 08 08 08 08 08 08 08 08 08 00 00 00 00 00 7e 7e
- ' $4fd0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $4fe0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $4ff0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $5000: 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08
- ' $5010: 08 08 08 08 08 08 08 08 08 00 00 00 00 00 00 00
- ' $5020: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $5030: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $5040: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $5050: 5d 5d 5d 5d 5d 5d 5d 5d 5d 5d 5d 5d 5d 5d 5d 5d
- ' $5060: 5d 5d 5d 5d 5d 5d 5d 5d 5d 55 55 55 55 55 55 55
- ' $5070: 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55
- ' $5080: 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55
- ' $5090: 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55
- ' $50a0: 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55
- ' $50b0: 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55
- ' $50c0: 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55
- ' $50d0: 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55
- ' $50e0: 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55
- ' $50f0: 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18
- ' $5100: 18 18 18 18 18 18 18 18 18 00 00 00 00 00 18 18
- ' $5110: 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18
- ' $5120: 18 18 18 18 18 18 18 00 00 00 00 00 00 00 00 00
- ' $5130: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $5140: 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18
- ' $5150: 18 18 18 18 18 18 18 18 18 00 00 00 00 00 18 18
- ' $5160: 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18
- ' $5170: 18 18 18 18 18 18 18 00 00 00 00 00 00 00 00 00
- ' $5180: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $5190: 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18
- ' $51a0: 18 18 18 18 18 18 18 18 7e 00 00 00 00 00 18 18
- ' $51b0: 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18
- ' $51c0: 18 18 18 18 18 18 7e 00 00 00 00 00 00 00 00 00
- ' $51d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $51e0: 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18
- ' $51f0: 18 18 18 18 18 18 18 18 7e 00 00 00 00 00 18 18
- ' $5200: 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18
- ' $5210: 18 18 18 18 18 18 7e 00 00 00 00 00 00 00 00 00
- ' $5220: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $5230: 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18
- ' $5240: 18 18 18 18 18 18 7e 18 ff 00 00 00 00 00 18 18
- ' $5250: 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18
- ' $5260: 18 18 18 18 7e 18 ff 00 00 00 00 00 00 00 00 00
- ' $5270: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $5280: 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18
- ' $5290: 18 18 18 18 18 18 7e 7e 7e 00 00 00 00 00 18 18
- ' $52a0: 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18
- ' $52b0: 18 18 18 18 7e 7e 7e 00 00 00 00 00 00 00 00 00
- ' $52c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $52d0: 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18
- ' $52e0: 18 18 18 18 18 18 00 7e 7e 00 00 00 00 00 18 18
- ' $52f0: 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18
- ' $5300: 18 18 18 18 00 7e 7e 00 00 00 00 00 00 00 00 00
- ' $5310: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $5320: 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18
- ' $5330: 18 18 18 18 7e 7e 7e 7e 00 00 00 00 00 00 18 18
- ' $5340: 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18
- ' $5350: 18 18 7e 7e 7e 7e 00 00 00 00 00 00 00 00 00 00
- ' $5360: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $5370: 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18
- ' $5380: 18 18 18 18 7e 7e 7e 7e 7e 00 00 00 00 00 18 18
- ' $5390: 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18
- ' $53a0: 18 18 7e 7e 7e 7e 7e 00 00 00 00 00 00 00 00 00
- ' $53b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $53c0: 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18
- ' $53d0: 18 18 7e 18 00 ff ff ff ff 00 00 00 00 00 18 18
- ' $53e0: 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18
- ' $53f0: 7e 18 00 ff ff ff ff 00 00 00 00 00 00 00 00 00
- ' $5400: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $5410: 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18
- ' $5420: 18 18 7e 7e 7e 7e 7e 00 18 00 00 00 00 00 18 18
- ' $5430: 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18
- ' $5440: 7e 7e 7e 7e 7e 00 18 00 00 00 00 00 00 00 00 00
- ' $5450: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $5460: 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18
- ' $5470: 18 18 00 7e 7e 7e 7e 7e 18 00 00 00 00 00 18 18
- ' $5480: 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18
- ' $5490: 00 7e 7e 7e 7e 7e 18 00 00 00 00 00 00 00 00 00
- ' $54a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $54b0: 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18
- ' $54c0: 18 7e 7e 7e 7e 00 00 7e 18 00 00 00 00 00 18 18
- ' $54d0: 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 7e
- ' $54e0: 7e 7e 7e 00 00 7e 18 00 00 00 00 00 00 00 00 00
- ' $54f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $5500: 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18
- ' $5510: 18 7e 7e 7e 7e 7e 7e 18 18 00 00 00 00 00 18 18
- ' $5520: 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 7e
- ' $5530: 7e 7e 7e 7e 7e 18 18 00 00 00 00 00 00 00 00 00
- ' $5540: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $5550: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
- ' $5560: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
- ' $5570: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
- ' $5580: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
- ' $5590: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
- ' $55a0: 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 7e
- ' $55b0: 7e 7e 7e 00 00 18 18 18 18 00 00 00 00 00 18 18
- ' $55c0: 18 18 18 18 18 18 18 18 18 18 18 18 18 7e 7e 7e
- ' $55d0: 7e 00 00 18 18 18 18 00 00 00 00 00 00 00 00 00
- ' $55e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $55f0: 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 00
- ' $5600: 7e 7e 7e 7e 7e 18 18 18 18 00 00 00 00 00 18 18
- ' $5610: 18 18 18 18 18 18 18 18 18 18 18 18 18 00 7e 7e
- ' $5620: 7e 7e 7e 18 18 18 18 00 00 00 00 00 00 00 00 00
- ' $5630: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $5640: 18 18 18 18 18 18 18 18 18 18 18 18 18 7e 7e 7e
- ' $5650: 7e 00 00 7e 7e 18 18 18 18 00 00 00 00 00 18 18
- ' $5660: 18 18 18 18 18 18 18 18 18 18 18 7e 7e 7e 7e 00
- ' $5670: 00 7e 7e 18 18 18 18 00 00 00 00 00 00 00 00 00
- ' $5680: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $5690: 18 18 18 18 18 18 18 18 18 18 18 18 18 7e 7e 7e
- ' $56a0: 7e 7e 7e 18 18 18 18 18 18 00 00 00 00 00 18 18
- ' $56b0: 18 18 18 18 18 18 18 18 18 18 18 7e 7e 7e 7e 7e
- ' $56c0: 7e 18 18 18 18 18 18 00 00 00 00 00 00 00 00 00
- ' $56d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $56e0: ff ff ff ff ff ff ff ff ff ff ff ff ff 81 ff ff
- ' $56f0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
- ' $5700: ff ff ff ff ff ff ff ff ff ff ff 81 ff ff ff ff
- ' $5710: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
- ' $5720: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
- ' $5730: 18 18 18 18 18 18 18 18 18 18 18 18 7e 7e 7e 7e
- ' $5740: 00 18 18 18 18 18 18 18 18 00 00 00 00 00 18 18
- ' $5750: 18 18 18 18 18 18 18 18 18 18 7e 7e 7e 7e 00 18
- ' $5760: 18 18 18 18 18 18 18 00 00 00 00 00 00 00 00 00
- ' $5770: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $5780: 18 18 18 18 18 18 18 18 18 18 18 18 7e 7e 7e 7e
- ' $5790: 7e 18 18 18 18 18 18 18 18 00 00 00 00 00 18 18
- ' $57a0: 18 18 18 18 18 18 18 18 18 18 7e 7e 7e 7e 7e 18
- ' $57b0: 18 18 18 18 18 18 18 00 00 00 00 00 00 00 00 00
- ' $57c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $57d0: 18 18 18 18 18 18 18 18 18 18 7e 7e 7e 7e 00 00
- ' $57e0: 7e 18 18 18 18 18 18 18 18 00 00 00 00 00 18 18
- ' $57f0: 18 18 18 18 18 18 18 18 7e 7e 7e 7e 00 00 7e 18
- ' $5800: 18 18 18 18 18 18 18 00 00 00 00 00 00 00 00 00
- ' $5810: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $5820: 18 18 18 18 18 18 18 18 18 18 7e 7e 7e 7e 7e 7e
- ' $5830: 18 18 18 18 18 18 18 18 18 00 00 00 00 00 18 18
- ' $5840: 18 18 18 18 18 18 18 18 7e 7e 7e 7e 7e 7e 18 18
- ' $5850: 18 18 18 18 18 18 18 00 00 00 00 00 00 00 00 00
- ' $5860: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $5870: ff ff ff ff ff ff ff ff ff ff 81 ff ff ff ff ff
- ' $5880: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
- ' $5890: ff ff ff ff ff ff ff ff 81 ff ff ff ff ff ff ff
- ' $58a0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
- ' $58b0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
- ' $58c0: 18 18 18 18 18 18 18 18 7e 7e 7e 7e 00 00 18 18
- ' $58d0: 18 18 18 18 18 18 18 18 18 00 00 00 00 00 18 18
- ' $58e0: 18 18 18 18 18 18 7e 7e 7e 7e 00 00 18 18 18 18
- ' $58f0: 18 18 18 18 18 18 18 00 00 00 00 00 00 00 00 00
- ' $5900: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $5910: 18 18 18 18 18 18 18 18 00 7e 7e 7e 7e 7e 18 18
- ' $5920: 18 18 18 18 18 18 18 18 18 00 00 00 00 00 18 18
- ' $5930: 18 18 18 18 18 18 00 7e 7e 7e 7e 7e 18 18 18 18
- ' $5940: 18 18 18 18 18 18 18 00 00 00 00 00 00 00 00 00
- ' $5950: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $5960: 18 18 18 18 18 18 7e 7e 7e 7e 7e 00 7e 7e 18 18
- ' $5970: 18 18 18 18 18 18 18 18 18 00 00 00 00 00 18 18
- ' $5980: 18 18 18 18 7e 7e 7e 7e 7e 00 7e 7e 18 18 18 18
- ' $5990: 18 18 18 18 18 18 18 00 00 00 00 00 00 00 00 00
- ' $59a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $59b0: 18 18 18 18 18 18 7e 7e 7e 7e 7e 7e 18 18 18 18
- ' $59c0: 18 18 18 18 18 18 18 18 18 00 00 00 00 00 18 18
- ' $59d0: 18 18 18 18 7e 7e 7e 7e 7e 7e 18 18 18 18 18 18
- ' $59e0: 18 18 18 18 18 18 18 00 00 00 00 00 00 00 00 00
- ' $59f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $5a00: ff ff ff ff ff ff 81 ff ff ff ff ff ff ff ff ff
- ' $5a10: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
- ' $5a20: ff ff ff ff 81 ff ff ff ff ff ff ff ff ff ff ff
- ' $5a30: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
- ' $5a40: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
- ' $5a50: 18 18 18 18 18 7e 7e 7e 7e 00 00 18 18 18 18 18
- ' $5a60: 18 18 18 18 18 18 18 18 18 00 00 00 00 00 18 18
- ' $5a70: 18 18 18 7e 7e 7e 7e 00 00 18 18 18 18 18 18 18
- ' $5a80: 18 18 18 18 18 18 18 00 00 00 00 00 00 00 00 00
- ' $5a90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $5aa0: 18 18 18 18 18 7e 7e 7e 7e 7e 7e 18 18 18 18 18
- ' $5ab0: 18 18 18 18 18 18 18 18 18 00 00 00 00 00 18 18
- ' $5ac0: 18 18 18 7e 7e 7e 7e 7e 7e 18 18 18 18 18 18 18
- ' $5ad0: 18 18 18 18 18 18 18 00 00 00 00 00 00 00 00 00
- ' $5ae0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $5af0: 18 18 18 7e 7e 7e 7e 00 00 7e 7e 18 18 18 18 18
- ' $5b00: 18 18 18 18 18 18 18 18 18 00 00 00 00 00 18 18
- ' $5b10: 18 7e 7e 7e 7e 00 00 7e 7e 18 18 18 18 18 18 18
- ' $5b20: 18 18 18 18 18 18 18 00 00 00 00 00 00 00 00 00
- ' $5b30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $5b40: 18 18 18 7e 7e 7e 7e 7e 7e 18 18 18 18 18 18 18
- ' $5b50: 18 18 18 18 18 18 18 18 18 00 00 00 00 00 18 18
- ' $5b60: 18 7e 7e 7e 7e 7e 7e 18 18 18 18 18 18 18 18 18
- ' $5b70: 18 18 18 18 18 18 18 00 00 00 00 00 00 00 00 00
- ' $5b80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $5b90: ff ff ff 81 ff ff ff ff ff ff ff ff ff ff ff ff
- ' $5ba0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
- ' $5bb0: ff 81 ff ff ff ff ff ff ff ff ff ff ff ff ff ff
- ' $5bc0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
- ' $5bd0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
- ' $5be0: 18 7e 7e 7e 7e 00 00 18 18 18 18 18 18 18 18 18
- ' $5bf0: 18 18 18 18 18 18 18 18 18 00 00 00 00 00 18 7e
- ' $5c00: 7e 7e 7e 00 00 18 18 18 18 18 18 18 18 18 18 18
- ' $5c10: 18 18 18 18 18 18 18 00 00 00 00 00 00 00 00 00
- ' $5c20: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $5c30: 18 00 7e 7e 7e 7e 7e 18 18 18 18 18 18 18 18 18
- ' $5c40: 18 18 18 18 18 18 18 18 18 00 00 00 00 00 18 00
- ' $5c50: 7e 7e 7e 7e 7e 18 18 18 18 18 18 18 18 18 18 18
- ' $5c60: 18 18 18 18 18 18 18 00 00 00 00 00 00 00 00 00
- ' $5c70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $5c80: 7e 7e 7e 7e 00 7e 7e 18 18 18 18 18 18 18 18 18
- ' $5c90: 18 18 18 18 18 18 18 18 18 00 00 00 00 00 7e 7e
- ' $5ca0: 7e 7e 00 7e 7e 18 18 18 18 18 18 18 18 18 18 18
- ' $5cb0: 18 18 18 18 18 18 18 00 00 00 00 00 00 00 00 00
- ' $5cc0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $5cd0: 7e 7e 7e 7e 7e 18 18 18 18 18 18 18 18 18 18 18
- ' $5ce0: 18 18 18 18 18 18 18 18 18 00 00 00 00 00 7e 7e
- ' $5cf0: 7e 7e 7e 18 18 18 18 18 18 18 18 18 18 18 18 18
- ' $5d00: 18 18 18 18 18 18 18 00 00 00 00 00 00 00 00 00
- ' $5d10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $5d20: ff ff 7e 7e 7e 18 18 18 18 18 18 18 18 18 18 18
- ' $5d30: 18 18 18 18 18 18 18 18 18 00 00 00 00 00 ff ff
- ' $5d40: 7e 7e 7e 18 18 18 18 18 18 18 18 18 18 18 18 18
- ' $5d50: 18 18 18 18 18 18 18 00 00 00 00 00 00 00 00 00
- ' $5d60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $5d70: 7e 7e 00 00 18 18 18 18 18 18 18 18 18 18 18 18
- ' $5d80: 18 18 18 18 18 18 18 18 18 00 00 00 00 00 7e 7e
- ' $5d90: 00 00 18 18 18 18 18 18 18 18 18 18 18 18 18 18
- ' $5da0: 18 18 18 18 18 18 18 00 00 00 00 00 00 00 00 00
- ' $5db0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $5dc0: 7e 7e 7e 7e 18 18 18 18 18 18 18 18 18 18 18 18
- ' $5dd0: 18 18 18 18 18 18 18 18 18 00 00 00 00 00 7e 7e
- ' $5de0: 7e 7e 18 18 18 18 18 18 18 18 18 18 18 18 18 18
- ' $5df0: 18 18 18 18 18 18 18 00 00 00 00 00 00 00 00 00
- ' $5e00: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $5e10: 00 00 7e 7e 18 18 18 18 18 18 18 18 18 18 18 18
- ' $5e20: 18 18 18 18 18 18 18 18 18 00 00 00 00 00 00 00
- ' $5e30: 7e 7e 18 18 18 18 18 18 18 18 18 18 18 18 18 18
- ' $5e40: 18 18 18 18 18 18 18 00 00 00 00 00 00 00 00 00
- ' $5e50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $5e60: 7e 7e 18 18 18 18 18 18 18 18 18 18 18 18 18 18
- ' $5e70: 18 18 18 18 18 18 18 18 18 00 00 00 00 00 7e 7e
- ' $5e80: 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18
- ' $5e90: 18 18 18 18 18 18 18 00 00 00 00 00 00 00 00 00
- ' $5ea0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $5eb0: 7e 7e 18 18 18 18 18 18 18 18 18 18 18 18 18 18
- ' $5ec0: 18 18 18 18 18 18 18 18 18 00 00 00 00 00 7e 7e
- ' $5ed0: 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18
- ' $5ee0: 18 18 18 18 18 18 18 00 00 00 00 00 00 00 00 00
- ' $5ef0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $5f00: 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18
- ' $5f10: 18 18 18 18 18 18 18 18 18 00 00 00 00 00 18 18
- ' $5f20: 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18
- ' $5f30: 18 18 18 18 18 18 18 00 00 00 00 00 00 00 00 00
- ' $5f40: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $5f50: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
- ' $5f60: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
- ' $5f70: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
- ' $5f80: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
- ' $5f90: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
- ' $5fa0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
- ' $5fb0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
- ' $5fc0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
- ' $5fd0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
- ' $5fe0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
- ' $5ff0: 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18
- ' $6000: 18 18 18 18 18 18 18 18 18 00 00 00 00 00 18 18
- ' $6010: 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18
- ' $6020: 18 18 18 18 18 18 18 00 00 00 00 00 00 00 00 00
- ' $6030: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $6040: 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18
- ' $6050: 18 18 18 18 18 18 18 18 18 00 00 00 00 00 18 18
- ' $6060: 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18
- ' $6070: 18 18 18 18 18 18 18 00 00 00 00 00 00 00 00 00
- ' $6080: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 c0
- ' $6090: 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18
- ' $60a0: 18 18 18 18 18 18 18 18 7e 00 00 00 00 00 18 18
- ' $60b0: 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18
- ' $60c0: 18 18 18 18 18 18 7e 00 00 00 00 00 00 00 00 00
- ' $60d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 06 20
- ' $60e0: 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18
- ' $60f0: 18 18 18 18 18 18 18 18 42 00 00 00 00 00 18 18
- ' $6100: 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18
- ' $6110: 18 18 18 18 18 18 42 00 00 00 00 00 00 00 00 00
- ' $6120: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0f 20
- ' $6130: 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18
- ' $6140: 18 18 18 18 18 18 7e 18 ff 00 00 00 00 00 18 18
- ' $6150: 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18
- ' $6160: 18 18 18 18 7e 18 ff 00 00 00 00 00 00 00 00 00
- ' $6170: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 18 90
- ' $6180: 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18
- ' $6190: 18 18 18 18 18 18 7e 7e 42 00 00 00 00 00 18 18
- ' $61a0: 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18
- ' $61b0: 18 18 18 18 7e 7e 42 00 00 00 00 00 00 00 00 00
- ' $61c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 30 90
- ' $61d0: 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18
- ' $61e0: 18 18 18 18 18 18 00 42 7e 00 00 00 00 00 18 18
- ' $61f0: 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18
- ' $6200: 18 18 18 18 00 42 7e 00 00 00 00 00 00 00 00 00
- ' $6210: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 30 58
- ' $6220: 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18
- ' $6230: 18 18 18 18 7e 7e 7e 42 00 00 00 00 00 00 18 18
- ' $6240: 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18
- ' $6250: 18 18 7e 7e 7e 42 00 00 00 00 00 00 00 00 00 00
- ' $6260: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 50 48
- ' $6270: 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18
- ' $6280: 18 18 18 18 7e 42 42 42 7e 00 00 00 00 00 18 18
- ' $6290: 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18
- ' $62a0: 18 18 7e 42 42 42 7e 00 00 00 00 00 00 00 00 00
- ' $62b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 50 68
- ' $62c0: 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18
- ' $62d0: 18 18 7e 18 00 ff ff ff ff 00 00 00 00 00 18 18
- ' $62e0: 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18
- ' $62f0: 7e 18 00 ff ff ff ff 00 00 00 00 00 00 00 00 00
- ' $6300: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 50 28
- ' $6310: 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18
- ' $6320: 18 18 7e 7e 7e 42 42 00 18 00 00 00 00 00 18 18
- ' $6330: 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18
- ' $6340: 7e 7e 7e 42 42 00 18 00 00 00 00 00 00 00 00 00
- ' $6350: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 50 28
- ' $6360: 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18
- ' $6370: 18 18 00 42 42 7e 7e 7e 18 00 00 00 00 00 18 18
- ' $6380: 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18
- ' $6390: 00 42 42 7e 7e 7e 18 00 00 00 00 00 00 00 00 00
- ' $63a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 50 28
- ' $63b0: 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18
- ' $63c0: 18 7e 7e 42 42 00 00 7e 18 00 00 00 00 00 18 18
- ' $63d0: 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 7e
- ' $63e0: 7e 42 42 00 00 7e 18 00 00 00 00 00 00 00 00 00
- ' $63f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 48 28
- ' $6400: 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18
- ' $6410: 18 42 42 42 42 7e 7e 18 18 00 00 00 00 00 18 18
- ' $6420: 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 42
- ' $6430: 42 42 42 7e 7e 18 18 00 00 00 00 00 00 00 00 00
- ' $6440: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 48 28
- ' $6450: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
- ' $6460: ff c3 c3 ff ff ff ff ff ff ff ff ff ff ff ff ff
- ' $6470: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff c3
- ' $6480: c3 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
- ' $6490: ff ff ff ff ff ff ff ff ff ff ff ff ff fc 28 28
- ' $64a0: 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 7e
- ' $64b0: 7e 42 42 00 00 18 18 18 18 00 00 00 00 00 18 18
- ' $64c0: 18 18 18 18 18 18 18 18 18 18 18 18 18 7e 7e 42
- ' $64d0: 42 00 00 18 18 18 18 00 00 00 00 00 00 00 00 00
- ' $64e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 28 28
- ' $64f0: 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 00
- ' $6500: 42 7e 7e 7e 7e 18 18 18 18 00 00 00 00 00 18 18
- ' $6510: 18 18 18 18 18 18 18 18 18 18 18 18 18 00 42 7e
- ' $6520: 7e 7e 7e 18 18 18 18 00 00 00 00 00 00 00 00 00
- ' $6530: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 2c 28
- ' $6540: 18 18 18 18 18 18 18 18 18 18 18 18 18 7e 7e 7e
- ' $6550: 42 00 00 7e 7e 18 18 18 18 00 00 00 00 00 18 18
- ' $6560: 18 18 18 18 18 18 18 18 18 18 18 7e 7e 7e 42 00
- ' $6570: 00 7e 7e 18 18 18 18 00 00 00 00 00 00 00 00 00
- ' $6580: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 24 28
- ' $6590: 18 18 18 18 18 18 18 18 18 18 18 18 18 7e 42 42
- ' $65a0: 42 7e 7e 18 18 18 18 18 18 00 00 00 00 00 18 18
- ' $65b0: 18 18 18 18 18 18 18 18 18 18 18 7e 42 42 42 7e
- ' $65c0: 7e 18 18 18 18 18 18 00 00 00 00 00 00 00 00 00
- ' $65d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 34 30
- ' $65e0: ff ff ff ff ff ff ff ff ff ff ff ff ff 81 c3 c3
- ' $65f0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
- ' $6600: ff ff ff ff ff ff ff ff ff ff ff 81 c3 c3 ff ff
- ' $6610: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
- ' $6620: ff ff ff ff ff ff ff ff ff ff ff ff ff fc 12 20
- ' $6630: 18 18 18 18 18 18 18 18 18 18 18 18 7e 7e 42 42
- ' $6640: 00 18 18 18 18 18 18 18 18 00 00 00 00 00 18 18
- ' $6650: 18 18 18 18 18 18 18 18 18 18 7e 7e 42 42 00 18
- ' $6660: 18 18 18 18 18 18 18 00 00 00 00 00 00 00 00 00
- ' $6670: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 12 c0
- ' $6680: 18 18 18 18 18 18 18 18 18 18 18 18 42 42 7e 7e
- ' $6690: 7e 18 18 18 18 18 18 18 18 00 00 00 00 00 18 18
- ' $66a0: 18 18 18 18 18 18 18 18 18 18 42 42 7e 7e 7e 18
- ' $66b0: 18 18 18 18 18 18 18 00 00 00 00 00 00 00 00 00
- ' $66c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 09 80
- ' $66d0: 18 18 18 18 18 18 18 18 18 18 7e 7e 42 42 00 00
- ' $66e0: 7e 18 18 18 18 18 18 18 18 00 00 00 00 00 18 18
- ' $66f0: 18 18 18 18 18 18 18 18 7e 7e 42 42 00 00 7e 18
- ' $6700: 18 18 18 18 18 18 18 00 00 00 00 00 00 00 00 00
- ' $6710: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0b 00
- ' $6720: 18 18 18 18 18 18 18 18 18 18 7e 42 42 42 7e 7e
- ' $6730: 18 18 18 18 18 18 18 18 18 00 00 00 00 00 18 18
- ' $6740: 18 18 18 18 18 18 18 18 7e 42 42 42 7e 7e 18 18
- ' $6750: 18 18 18 18 18 18 18 00 00 00 00 00 00 00 00 00
- ' $6760: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 07 00
- ' $6770: ff ff ff ff ff ff ff ff ff ff 81 c3 ff ff ff ff
- ' $6780: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
- ' $6790: ff ff ff ff ff ff ff ff 81 c3 ff ff ff ff ff ff
- ' $67a0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
- ' $67b0: ff ff ff ff ff ff ff ff ff ff ff ff ff fc 06 80
- ' $67c0: 18 18 18 18 18 18 18 18 7e 7e 7e 42 00 00 18 18
- ' $67d0: 18 18 18 18 18 18 18 18 18 00 00 00 00 00 18 18
- ' $67e0: 18 18 18 18 18 18 7e 7e 7e 42 00 00 18 18 18 18
- ' $67f0: 18 18 18 18 18 18 18 00 00 00 00 00 00 00 00 00
- ' $6800: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0c 80
- ' $6810: 18 18 18 18 18 18 18 18 00 42 42 7e 7e 7e 18 18
- ' $6820: 18 18 18 18 18 18 18 18 18 00 00 00 00 00 18 18
- ' $6830: 18 18 18 18 18 18 00 42 42 7e 7e 7e 18 18 18 18
- ' $6840: 18 18 18 18 18 18 18 00 00 00 00 00 00 00 00 00
- ' $6850: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0a 80
- ' $6860: 18 18 18 18 18 18 7e 7e 7e 42 42 00 7e 7e 18 18
- ' $6870: 18 18 18 18 18 18 18 18 18 00 00 00 00 00 18 18
- ' $6880: 18 18 18 18 7e 7e 7e 42 42 00 7e 7e 18 18 18 18
- ' $6890: 18 18 18 18 18 18 18 00 00 00 00 00 00 00 00 00
- ' $68a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 3b f8
- ' $68b0: 18 18 18 18 18 18 7e 42 42 42 42 7e 18 18 18 18
- ' $68c0: 18 18 18 18 18 18 18 18 18 00 00 00 00 00 18 18
- ' $68d0: 18 18 18 18 7e 42 42 42 42 7e 18 18 18 18 18 18
- ' $68e0: 18 18 18 18 18 18 18 00 00 00 00 00 00 00 00 00
- ' $68f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 32 88
- ' $6900: ff ff ff ff ff ff 81 c3 c3 ff ff ff ff ff ff ff
- ' $6910: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
- ' $6920: ff ff ff ff 81 c3 c3 ff ff ff ff ff ff ff ff ff
- ' $6930: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
- ' $6940: ff ff ff ff ff ff ff ff ff ff ff ff ff fc 3f e8
- ' $6950: 18 18 18 18 18 7e 7e 42 42 00 00 18 18 18 18 18
- ' $6960: 18 18 18 18 18 18 18 18 18 00 00 00 00 00 18 18
- ' $6970: 18 18 18 7e 7e 42 42 00 00 18 18 18 18 18 18 18
- ' $6980: 18 18 18 18 18 18 18 00 00 00 00 00 00 00 00 00
- ' $6990: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 5a 68
- ' $69a0: 18 18 18 18 18 42 42 7e 7e 7e 7e 18 18 18 18 18
- ' $69b0: 18 18 18 18 18 18 18 18 18 00 00 00 00 00 18 18
- ' $69c0: 18 18 18 42 42 7e 7e 7e 7e 18 18 18 18 18 18 18
- ' $69d0: 18 18 18 18 18 18 18 00 00 00 00 00 00 00 00 00
- ' $69e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 5a 68
- ' $69f0: 18 18 18 7e 7e 42 42 00 00 7e 7e 18 18 18 18 18
- ' $6a00: 18 18 18 18 18 18 18 18 18 00 00 00 00 00 18 18
- ' $6a10: 18 7e 7e 42 42 00 00 7e 7e 18 18 18 18 18 18 18
- ' $6a20: 18 18 18 18 18 18 18 00 00 00 00 00 00 00 00 00
- ' $6a30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 49 28
- ' $6a40: 18 18 18 7e 42 42 42 7e 7e 18 18 18 18 18 18 18
- ' $6a50: 18 18 18 18 18 18 18 18 18 00 00 00 00 00 18 18
- ' $6a60: 18 7e 42 42 42 7e 7e 18 18 18 18 18 18 18 18 18
- ' $6a70: 18 18 18 18 18 18 18 00 00 00 00 00 00 00 00 00
- ' $6a80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 4f f0
- ' $6a90: ff ff ff 81 c3 ff ff ff ff ff ff ff ff ff ff ff
- ' $6aa0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
- ' $6ab0: ff 81 c3 ff ff ff ff ff ff ff ff ff ff ff ff ff
- ' $6ac0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
- ' $6ad0: ff ff ff ff ff ff ff ff ff ff ff ff ff fc 20 b0
- ' $6ae0: 18 7e 7e 7e 42 00 00 18 18 18 18 18 18 18 18 18
- ' $6af0: 18 18 18 18 18 18 18 18 18 00 00 00 00 00 18 7e
- ' $6b00: 7e 7e 42 00 00 18 18 18 18 18 18 18 18 18 18 18
- ' $6b10: 18 18 18 18 18 18 18 00 00 00 00 00 00 00 00 00
- ' $6b20: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 1f d0
- ' $6b30: 18 00 42 42 7e 7e 7e 18 18 18 18 18 18 18 18 18
- ' $6b40: 18 18 18 18 18 18 18 18 18 00 00 00 00 00 18 00
- ' $6b50: 42 42 7e 7e 7e 18 18 18 18 18 18 18 18 18 18 18
- ' $6b60: 18 18 18 18 18 18 18 00 00 00 00 00 00 00 00 00
- ' $6b70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 50
- ' $6b80: 7e 7e 42 42 00 7e 7e 18 18 18 18 18 18 18 18 18
- ' $6b90: 18 18 18 18 18 18 18 18 18 00 00 00 00 00 7e 7e
- ' $6ba0: 42 42 00 7e 7e 18 18 18 18 18 18 18 18 18 18 18
- ' $6bb0: 18 18 18 18 18 18 18 00 00 00 00 00 00 00 00 00
- ' $6bc0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 d0
- ' $6bd0: 42 42 42 42 7e 18 18 18 18 18 18 18 18 18 18 18
- ' $6be0: 18 18 18 18 18 18 18 18 18 00 00 00 00 00 42 42
- ' $6bf0: 42 42 7e 18 18 18 18 18 18 18 18 18 18 18 18 18
- ' $6c00: 18 18 18 18 18 18 18 00 00 00 00 00 00 00 00 00
- ' $6c10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 03 d0
- ' $6c20: ff ff 7e 7e 7e 18 18 18 18 18 18 18 18 18 18 18
- ' $6c30: 18 18 18 18 18 18 18 18 18 00 00 00 00 00 ff ff
- ' $6c40: 7e 7e 7e 18 18 18 18 18 18 18 18 18 18 18 18 18
- ' $6c50: 18 18 18 18 18 18 18 00 00 00 00 00 00 00 00 00
- ' $6c60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 07 50
- ' $6c70: 42 42 00 00 18 18 18 18 18 18 18 18 18 18 18 18
- ' $6c80: 18 18 18 18 18 18 18 18 18 00 00 00 00 00 42 42
- ' $6c90: 00 00 18 18 18 18 18 18 18 18 18 18 18 18 18 18
- ' $6ca0: 18 18 18 18 18 18 18 00 00 00 00 00 00 00 00 00
- ' $6cb0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0f 50
- ' $6cc0: 7e 7e 7e 7e 18 18 18 18 18 18 18 18 18 18 18 18
- ' $6cd0: 18 18 18 18 18 18 18 18 18 00 00 00 00 00 7e 7e
- ' $6ce0: 7e 7e 18 18 18 18 18 18 18 18 18 18 18 18 18 18
- ' $6cf0: 18 18 18 18 18 18 18 00 00 00 00 00 00 00 00 00
- ' $6d00: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 09 50
- ' $6d10: 00 00 7e 7e 18 18 18 18 18 18 18 18 18 18 18 18
- ' $6d20: 18 18 18 18 18 18 18 18 18 00 00 00 00 00 00 00
- ' $6d30: 7e 7e 18 18 18 18 18 18 18 18 18 18 18 18 18 18
- ' $6d40: 18 18 18 18 18 18 18 00 00 00 00 00 00 00 00 00
- ' $6d50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 09 f0
- ' $6d60: 7e 7e 18 18 18 18 18 18 18 18 18 18 18 18 18 18
- ' $6d70: 18 18 18 18 18 18 18 18 18 00 00 00 00 00 7e 7e
- ' $6d80: 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18
- ' $6d90: 18 18 18 18 18 18 18 00 00 00 00 00 00 00 00 00
- ' $6da0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 04 40
- ' $6db0: 7e 7e 18 18 18 18 18 18 18 18 18 18 18 18 18 18
- ' $6dc0: 18 18 18 18 18 18 18 18 18 00 00 00 00 00 7e 7e
- ' $6dd0: 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18
- ' $6de0: 18 18 18 18 18 18 18 00 00 00 00 00 00 00 00 00
- ' $6df0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 07 c0
- ' $6e00: 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18
- ' $6e10: 18 18 18 18 18 18 18 18 18 00 00 00 00 00 18 18
- ' $6e20: 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18 18
- ' $6e30: 18 18 18 18 18 18 18 00 00 00 00 00 00 00 00 00
- ' $6e40: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $6e50: 5d 5d 5d 5d 5d 5d 5d 5d 5d 5d 5d 5d 5d 5d 5d 5d
- ' $6e60: 5d 5d 5d 5d 5d 5d 5d 5d 5d 55 55 55 55 55 5d 5d
- ' $6e70: 5d 5d 5d 5d 5d 5d 5d 5d 5d 5d 5d 5d 5d 5d 5d 5d
- ' $6e80: 5d 5d 5d 5d 5d 5d 5d 55 55 55 55 55 55 55 55 55
- ' $6e90: 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55
- ' $6ea0: 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55
- ' $6eb0: 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55
- ' $6ec0: 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55
- ' $6ed0: 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55
- ' $6ee0: 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55 55
- ' $6ef0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $6f00: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 08 08
- ' $6f10: 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08
- ' $6f20: 08 08 08 08 08 08 08 00 00 00 00 00 00 00 00 00
- ' $6f30: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $6f40: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $6f50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 08 08
- ' $6f60: 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08
- ' $6f70: 08 08 08 08 08 08 08 00 00 00 00 00 00 00 00 00
- ' $6f80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $6f90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $6fa0: 00 00 00 00 00 00 00 00 7e 00 00 00 00 00 08 08
- ' $6fb0: 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08
- ' $6fc0: 08 08 08 08 08 08 7e 00 00 00 00 00 00 00 00 00
- ' $6fd0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $6fe0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $6ff0: 00 00 00 00 00 00 00 00 42 00 00 00 00 00 08 08
- ' $7000: 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08
- ' $7010: 08 08 08 08 08 08 42 00 00 00 00 00 00 00 00 00
- ' $7020: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $7030: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $7040: 00 00 00 00 00 00 7e 00 ff 00 00 00 00 00 08 08
- ' $7050: 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08
- ' $7060: 08 08 08 08 7e 08 ff 00 00 00 00 00 00 00 00 00
- ' $7070: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $7080: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $7090: 00 00 00 00 00 00 7e 7e 42 00 00 00 00 00 08 08
- ' $70a0: 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08
- ' $70b0: 08 08 08 08 7e 7e 42 00 00 00 00 00 00 00 00 00
- ' $70c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $70d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $70e0: 00 00 00 00 00 00 00 42 7e 00 00 00 00 00 08 08
- ' $70f0: 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08
- ' $7100: 08 08 08 08 00 42 7e 00 00 00 00 00 00 00 00 00
- ' $7110: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $7120: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $7130: 00 00 00 00 7e 7e 7e 42 00 00 00 00 00 00 08 08
- ' $7140: 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08
- ' $7150: 08 08 7e 7e 7e 42 00 00 00 00 00 00 00 00 00 00
- ' $7160: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $7170: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $7180: 00 00 00 00 7e 42 42 42 7e 00 00 00 00 00 08 08
- ' $7190: 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08
- ' $71a0: 08 08 7e 42 42 42 7e 00 00 00 00 00 00 00 00 00
- ' $71b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $71c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $71d0: 00 00 7e 00 00 ff ff ff ff 00 00 00 00 00 08 08
- ' $71e0: 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08
- ' $71f0: 7e 08 00 ff ff ff ff 00 00 00 00 00 00 00 00 00
- ' $7200: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $7210: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $7220: 00 00 7e 7e 7e 42 42 00 08 00 00 00 00 00 08 08
- ' $7230: 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08
- ' $7240: 7e 7e 7e 42 42 00 00 00 00 00 00 00 00 00 00 00
- ' $7250: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $7260: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $7270: 00 00 00 42 42 7e 7e 7e 08 00 00 00 00 00 08 08
- ' $7280: 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08
- ' $7290: 00 42 42 7e 7e 7e 00 00 00 00 00 00 00 00 00 00
- ' $72a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $72b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $72c0: 00 7e 7e 42 42 00 00 7e 08 00 00 00 00 00 08 08
- ' $72d0: 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 7e
- ' $72e0: 7e 42 42 00 00 7e 00 00 00 00 00 00 00 00 00 00
- ' $72f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $7300: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $7310: 00 42 42 42 42 7e 7e 08 08 00 00 00 00 00 08 08
- ' $7320: 08 08 08 08 08 08 08 08 08 08 08 08 08 08 08 42
- ' $7330: 42 42 42 7e 7e 00 00 00 00 00 00 00 00 00 00 00
- ' $7340: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $7350: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
- ' $7360: ff c3 c3 ff ff ff ff ff ff ff ff ff ff ff ff ff
- ' $7370: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff c3
- ' $7380: c3 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
- ' $7390: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
- ' $73a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 7e
- ' $73b0: 7e 42 42 00 00 08 08 08 08 00 00 00 00 00 08 08
- ' $73c0: 08 08 08 08 08 08 08 08 08 08 08 08 08 7e 7e 42
- ' $73d0: 42 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $73e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $73f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $7400: 42 7e 7e 7e 7e 08 08 08 08 00 00 00 00 00 08 08
- ' $7410: 08 08 08 08 08 08 08 08 08 08 08 08 08 00 42 7e
- ' $7420: 7e 7e 7e 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $7430: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $7440: 00 00 00 00 00 00 00 00 00 00 00 00 00 7e 7e 7e
- ' $7450: 42 00 00 7e 7e 08 08 08 08 00 00 00 00 00 08 08
- ' $7460: 08 08 08 08 08 08 08 08 08 08 08 7e 7e 7e 42 00
- ' $7470: 00 7e 7e 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $7480: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $7490: 00 00 00 00 00 00 00 00 00 00 00 00 00 7e 42 42
- ' $74a0: 42 7e 7e 08 08 08 08 08 08 00 00 00 00 00 08 08
- ' $74b0: 08 08 08 08 08 08 08 08 08 08 08 7e 42 42 42 7e
- ' $74c0: 7e 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $74d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $74e0: ff ff ff ff ff ff ff ff ff ff ff ff ff 81 c3 c3
- ' $74f0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
- ' $7500: ff ff ff ff ff ff ff ff ff ff ff 81 c3 c3 ff ff
- ' $7510: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
- ' $7520: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
- ' $7530: 00 00 00 00 00 00 00 00 00 00 00 00 7e 7e 42 42
- ' $7540: 00 08 08 08 08 08 08 08 08 00 00 00 00 00 08 08
- ' $7550: 08 08 08 08 08 08 08 08 08 08 7e 7e 42 42 00 00
- ' $7560: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $7570: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $7580: 00 00 00 00 00 00 00 00 00 00 00 00 42 42 7e 7e
- ' $7590: 7e 08 08 08 08 08 08 08 08 00 00 00 00 00 08 08
- ' $75a0: 08 08 08 08 08 08 08 08 08 08 42 42 7e 7e 7e 00
- ' $75b0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $75c0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $75d0: 00 00 00 00 00 00 00 00 00 00 7e 7e 42 42 00 00
- ' $75e0: 7e 08 08 08 08 08 08 08 08 00 00 00 00 00 08 08
- ' $75f0: 08 08 08 08 08 08 08 08 7e 7e 42 42 00 00 7e 00
- ' $7600: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $7610: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $7620: 00 00 00 00 00 00 00 00 00 00 7e 42 42 42 7e 7e
- ' $7630: 08 08 08 08 08 08 08 08 08 00 00 00 00 00 08 08
- ' $7640: 08 08 08 08 08 08 08 08 7e 42 42 42 7e 7e 00 00
- ' $7650: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $7660: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $7670: ff ff ff ff ff ff ff ff ff ff 81 c3 ff ff ff ff
- ' $7680: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
- ' $7690: ff ff ff ff ff ff ff ff 81 c3 ff ff ff ff ff ff
- ' $76a0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
- ' $76b0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
- ' $76c0: 00 00 00 00 00 00 00 00 7e 7e 7e 42 00 00 08 08
- ' $76d0: 08 08 08 08 08 08 08 08 08 00 00 00 00 00 08 08
- ' $76e0: 08 08 08 08 08 08 7e 7e 7e 42 00 00 00 00 00 00
- ' $76f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $7700: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $7710: 00 00 00 00 00 00 00 00 00 42 42 7e 7e 7e 08 08
- ' $7720: 08 08 08 08 08 08 08 08 08 00 00 00 00 00 08 08
- ' $7730: 08 08 08 08 08 08 00 42 42 7e 7e 7e 00 00 00 00
- ' $7740: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $7750: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $7760: 00 00 00 00 00 00 7e 7e 7e 42 42 00 7e 7e 08 08
- ' $7770: 08 08 08 08 08 08 08 08 08 00 00 00 00 00 08 08
- ' $7780: 08 08 08 08 7e 7e 7e 42 42 00 7e 7e 00 00 00 00
- ' $7790: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $77a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $77b0: 00 00 00 00 00 00 7e 42 42 42 42 7e 08 08 08 08
- ' $77c0: 08 08 08 08 08 08 08 08 08 00 00 00 00 00 08 08
- ' $77d0: 08 08 08 08 7e 42 42 42 42 7e 00 00 00 00 00 00
- ' $77e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $77f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $7800: ff ff ff ff ff ff 81 c3 c3 ff ff ff ff ff ff ff
- ' $7810: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
- ' $7820: ff ff ff ff 81 c3 c3 ff ff ff ff ff ff ff ff ff
- ' $7830: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
- ' $7840: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
- ' $7850: 00 00 00 00 00 7e 7e 42 42 00 00 08 08 08 08 08
- ' $7860: 08 08 08 08 08 08 08 08 08 00 00 00 00 00 08 08
- ' $7870: 08 08 08 7e 7e 42 42 00 00 00 00 00 00 00 00 00
- ' $7880: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $7890: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $78a0: 00 00 00 00 00 42 42 7e 7e 7e 7e 08 08 08 08 08
- ' $78b0: 08 08 08 08 08 08 08 08 08 00 00 00 00 00 08 08
- ' $78c0: 08 08 08 42 42 7e 7e 7e 7e 00 00 00 00 00 00 00
- ' $78d0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $78e0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $78f0: 00 00 00 7e 7e 42 42 00 00 7e 7e 08 08 08 08 08
- ' $7900: 08 08 08 08 08 08 08 08 08 00 00 00 00 00 08 08
- ' $7910: 08 7e 7e 42 42 00 00 7e 7e 00 00 00 00 00 00 00
- ' $7920: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $7930: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $7940: 00 00 00 7e 42 42 42 7e 7e 08 08 08 08 08 08 08
- ' $7950: 08 08 08 08 08 08 08 08 08 00 00 00 00 00 08 08
- ' $7960: 08 7e 42 42 42 7e 7e 00 00 00 00 00 00 00 00 00
- ' $7970: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $7980: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $7990: ff ff ff 81 c3 ff ff ff ff ff ff ff ff ff ff ff
- ' $79a0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
- ' $79b0: ff 81 c3 ff ff ff ff ff ff ff ff ff ff ff ff ff
- ' $79c0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
- ' $79d0: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
- ' $79e0: 00 7e 7e 7e 42 00 00 08 08 08 08 08 08 08 08 08
- ' $79f0: 08 08 08 08 08 08 08 08 08 00 00 00 00 00 08 7e
- ' $7a00: 7e 7e 42 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $7a10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $7a20: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $7a30: 00 00 42 42 7e 7e 7e 08 08 08 08 08 08 08 08 08
- ' $7a40: 08 08 08 08 08 08 08 08 08 00 00 00 00 00 08 00
- ' $7a50: 42 42 7e 7e 7e 00 00 00 00 00 00 00 00 00 00 00
- ' $7a60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $7a70: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $7a80: 7e 7e 42 42 00 7e 7e 08 08 08 08 08 08 08 08 08
- ' $7a90: 08 08 08 08 08 08 08 08 08 00 00 00 00 00 7e 7e
- ' $7aa0: 42 42 00 7e 7e 00 00 00 00 00 00 00 00 00 00 00
- ' $7ab0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $7ac0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $7ad0: 42 42 42 42 7e 08 08 08 08 08 08 08 08 08 08 08
- ' $7ae0: 08 08 08 08 08 08 08 08 08 00 00 00 00 00 42 42
- ' $7af0: 42 42 7e 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $7b00: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $7b10: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $7b20: ff ff 7e 7e 7e 08 08 08 08 08 08 08 08 08 08 08
- ' $7b30: 08 08 08 08 08 08 08 08 08 00 00 00 00 00 ff ff
- ' $7b40: 7e 7e 7e 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $7b50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $7b60: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $7b70: 42 42 00 00 08 08 08 08 08 08 08 08 08 08 08 08
- ' $7b80: 08 08 08 08 08 08 08 08 08 00 00 00 00 00 42 42
- ' $7b90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $7ba0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $7bb0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $7bc0: 7e 7e 7e 7e 08 08 08 08 08 08 08 08 08 08 08 08
- ' $7bd0: 08 08 08 08 08 08 08 08 08 00 00 00 00 00 7e 7e
- ' $7be0: 7e 7e 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $7bf0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $7c00: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $7c10: 00 00 7e 7e 08 08 08 08 08 08 08 08 08 08 08 08
- ' $7c20: 08 08 08 08 08 08 08 08 08 00 00 00 00 00 00 00
- ' $7c30: 7e 7e 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $7c40: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $7c50: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $7c60: 7e 7e 08 08 08 08 08 08 08 08 08 08 08 08 08 08
- ' $7c70: 08 08 08 08 08 08 08 08 08 00 00 00 00 00 7e 7e
- ' $7c80: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $7c90: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $7ca0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $7cb0: 7e 7e 08 08 08 08 08 08 08 08 08 08 08 08 08 08
- ' $7cc0: 08 08 08 08 08 08 08 08 08 00 00 00 00 00 7e 7e
- ' $7cd0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $7ce0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' $7cf0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
- ' 32000 Bytes.
- INLINE a1%,32000
- LET a1$="" ! Variable erst mal erzeugen
- LPOKE *a1$,a1% ! Var.adr. in den Desktriptor
- DPOKE *a1$+4,8332 ! Var.länge in den "
- ' ............................................................................
- SPUT a1$ ! Bildschirm ausgeben
- ' ----------------------------------------------------------------------------
- ' |1: In dem Inline-Befehl ist nun der ganze Bildschirm drin, wie er
- ' normalerweise nach der
- ' PROCEDURE 0_grafische_vorbereitungen_ohne_inline aussieht.
- ' In der Prozedur, in der wir uns jetzt befinden, wird der Bild-
- ' schirm aus der Inline-Zeile herausgenommen und ausgegeben, so
- ' daß dann nur noch fotografiert, nix mehr gezeichnet werden muß,
- ' außer den Notenlinien in '1_workscreen_notenlinien_zeichnen'.
- ' Hinter dem Inline-Befehl ist kein Remark möglich !
- ' Folgende Befehle müßten zur Konstruktion eines Inline-Bildes
- ' in der Prozedur: '0_grafische_vorbereitungen_ohne_inline'
- ' stehen.
- ' Diese Befehle müssen zur Konstruktion eines Inline-Bildes ein-
- ' malig ausgeführt werden.
- ' Sie müssen genau vor den Fotografier-Prozeduren stehen.
- ' Danach setzt man den Cursor auf die Inline-Zeile,
- ' drückt die Help-Taste und läd das Bild BLD.INL in den Inline-
- ' Befehl hinein.
- '
- ' SGET a$ !
- ' OPEN "O",#1,"BLD.INL" !
- ' PRINT #1,a$ !
- ' CLOSE #1 !
- ' ----------------------------------------------------------------------------
- RETURN
- ' ..............................................................................
- > PROCEDURE 0_grafische_vorbereitungen_ohne_inline ! Diese Procs können
- ' ----------------------------------------------------------------------------
- @1_workscreen_notenlinien_zeichnen !
- @1_klaviatur_zeichnen !
- @1_notenschluessel_zeichnen !
- @1_notenbilder_zeichnen ! evtl.Speichrbefehle zw.dieser
- ' !
- @1_klaviatur_fotografieren ! und dieser Zeile !
- @1_notenschluessel_fotografieren !
- @1_notenbilder_fotografieren !
- @1_workscreen_notenlinien_zeichnen ! nicht fotografiert weg.Speichr
- @1_workscreen_menue !
- @1_cursor_setzen !
- DEFMOUSE 0 ! Maus als Pfeil (nicht Biene)
- ' ----------------------------------------------------------------------------
- ' Diese Befehle müssen zur Konstruktion eines Inline-Bildes ein-
- ' malig ausgeführt werden.
- ' Sie müssen genau vor den Fotografier-Prozeduren stehen.
- ' Danach setzt man den Cursor auf die Inline-Zeile,
- ' drückt die Help-Taste und läd das Bild BLD.INL in den Inline-
- ' Befehl hinein.
- ' SGET a$ !
- ' OPEN "O",#1,"BLD.INL" !
- ' PRINT #1,a$ !
- ' CLOSE #1 !
- ' END !
- ' ----------------------------------------------------------------------------
- RETURN
- > PROCEDURE 1_klaviatur_zeichnen ! weg bei Compilervers
- ' ----------------------------------------------------------------------------
- LOCAL ntb| ! Notentastenbreite
- LOCAL ptb| ! Pausentastenbreite
- LOCAL i| ! Tastenzähler
- LOCAL x1% ! links
- LOCAL y1% ! oben
- LOCAL x2% ! rechts
- LOCAL y2% ! unten |1
- ' ............................................................................
- LET ntb|=25 ! Notentastenbreite
- LET ptb|=20 ! Pausentastenbreite
- LET y1%=0 ! oben
- LET y2%=15 ! unten=Menühöhe-1
- ' ............................................................................
- FOR i|=1 TO 24+1 ! Alle Notentasten durch
- LET x1%=ptb|+(i|-1)*ntb| ! links
- LET x2%=ptb|+i|*ntb| ! rechts
- LINE x1%,y1%,x1%,y2% ! Tastenbegrenzung links
- ' ! F schwarze Taste:
- SELECT i| ! Betrachte i|
- CASE 2,4,7,9,11,14,16,19,21,23 ! f schwarze Taste
- PBOX x1%,y1%,x2%,y2% ! schwarze Taste malen
- ENDSELECT ! EF schwarze Taste
- NEXT i| ! nächste Notentaste
- ' ............................................................................
- BOUNDARY 0 ! Rand ausschalten
- DEFFILL 1,2,4 ! Muster für Pausentaste
- PBOX 0,y1%,ptb|-1,y2% ! Pausentaste links
- DEFFILL 1,2,8 ! Muster wieder schwarz
- BOUNDARY 1 ! Rand wieder einschalten
- ' ----------------------------------------------------------------------------
- ' |1: Achtung ! wenn y2| geändert wird, dann auch in der
- ' PROCEDURE 1_klaviatur_fotografieren
- ' ----------------------------------------------------------------------------
- RETURN
- > PROCEDURE 1_notenschluessel_zeichnen ! falls Inline exist.
- ' ----------------------------------------------------------------------------
- LOCAL x1%,y1%,x2%,y2% ! Koordinaten für Zeichnung
- LOCAL x%,y% ! Koord. für GET
- LOCAL schatten$ !
- ' ............................................................................
- LET x%=gx%(1,319) ! Erst mal Hintergrund löschen:
- LET y%=gy%(1,319) !
- DEFFILL 0 ! Gebundenzeichen: hohler Kopf
- PBOX x%-2,y%,x%+15,y%+45 !
- DEFFILL 1 ! wieder normales Füllmuster
- ' ............................................................................
- RESTORE rekonstruktionsdaten !
- DO !
- READ x1%,y1%,x2%,y2% !
- EXIT IF x1%=-1 !
- LINE x1%,y1%+1,x2%,y2%+1 !
- LOOP !
- GET x%,y%,x%+15,y%+43,schatten$ ! Notenschlüssel fotografieren|1
- PUT x%-2,y%+2,schatten$,7 ! Schatten für Notenschl.
- ' ----------------------------------------------------------------------------
- ' |1: Das ist nicht die entgültige Fotografie, denn sie wird hier nur
- ' für den Schatten benutzt.
- ' ----------------------------------------------------------------------------
- RETURN
- > PROCEDURE 1_notenbilder_zeichnen ! "
- ' ----------------------------------------------------------------------------
- @2_pause_zeichnen ! Pausenzeichen
- FOR i|=1 TO 25 ! Noten von 2 Oktaven durch
- @2_note_zeichnen(1,0*80+i|,i|,0,0,0) ! ungeb., ob.kl., kein Tktstr.
- @2_note_zeichnen(2,0*80+i|,i|,0,0,1) ! ungeb., ob.kl., Tktstr.
- @2_note_zeichnen(1,1*80+i|,i|,1,0,1) ! geb., ob.kl., Tktstr.
- @2_note_zeichnen(2,1*80+i|,i|,1,0,0) ! geb., ob.kl., kein Tktstr.
- @2_note_zeichnen(1,2*80+i|,i|,0,1,0) ! ungeb., unt.kl., kein Tktstr.
- @2_note_zeichnen(2,2*80+i|,i|,0,1,1) ! ungeb., unt.kl., Tktstr.
- @2_note_zeichnen(1,3*80+i|,i|,1,1,1) ! geb., unt.kl., Tktstr.
- @2_note_zeichnen(2,3*80+i|,i|,1,1,0) ! geb., unt.kl., kein Tktstr.
- NEXT i| ! nächste Note
- ' ----------------------------------------------------------------------------
- RETURN
- > PROCEDURE 2_pause_zeichnen ! "
- ' ----------------------------------------------------------------------------
- LOCAL x% ! x-Startposition links
- LOCAL y% ! y-Startposition oben
- ' ............................................................................
- LET x%=gx%(1,79) ! x-Startposition links
- LET y%=gy%(1,79) ! y-Startposition oben
- ' ............................................................................
- @3_pausenzeichen(gyan|(17),gyan|(5),x%,y%) ! Pausennote malen |1
- ' ............................................................................
- LET x%=gx%(1,76) ! x-Startposition links
- LET y%=gy%(1,76) ! y-Startposition oben
- ' ............................................................................
- @4_taktstrich(gyan|(10),x%,y%) ! Taktstrich zeichnen
- @3_pausenzeichen(gyan|(17),gyan|(5),x%,y%) ! Pausennote malen |1
- ' ----------------------------------------------------------------------------
- ' |1: 17 entspricht der Note e'', dort soll das Pausenzeichen (von
- ' oben) beginnen und bei f' (=5) enden.
- ' ----------------------------------------------------------------------------
- RETURN
- > PROCEDURE 3_pausenzeichen(a|,e|,x%,y%) ! "
- ' ----------------------------------------------------------------------------
- BOX x%+2,y%+a|+1,x%+5,y%+e| ! Pausenzeichen
- COLOR 0 ! Radiergummifarbe: weiß
- BOX x%+3,y%+a|+2,x%+4,y%+e|-1 ! Pausenzeichen (innen hohl)
- COLOR 1 ! normale Zeichenfarbe: schwarz
- ' ----------------------------------------------------------------------------
- RETURN
- > PROCEDURE 2_note_zeichnen(stimme|,platz%,th|,g!,u!,t!) ! "
- ' ----------------------------------------------------------------------------
- ' th| ! Tonhöhe (1-25)
- ' g! ! Gebundenzeichen
- ' u! ! Untere Klaviatur
- ' t! ! Taktstrich
- '
- LOCAL c$ ! Codierung für Notenfoto
- LOCAL yan| ! y-Anfang Notenkopf (Abkürzung)
- LOCAL y| ! Tonkopfstartabkürzung
- LOCAL xs% ! x-Startposition links
- LOCAL ys% ! y-Startposition oben
- LOCAL k! ! Kreuzflag
- ' ............................................................................
- SELECT th| ! betrachte tonhoehe
- CASE 2,4,7,9,11,14,16,19,21,23 ! f schwarze Taste
- LET k!=TRUE ! Kreuzflag setzen
- ENDSELECT !
- ' ............................................................................
- LET y|=gyan|(th|) ! Arrayeintrag abkürzen
- IF stimme|=1 ! f erste Stimme |1
- LET xs%=gx%(1,platz%) ! x-Startposition links
- LET ys%=gy%(1,platz%) ! y-Startposition oben
- ELSE ! f zweite Stimme
- LET xs%=gx%(2,platz%) ! x-Startposition links
- LET ys%=gy%(2,platz%) ! y-Startposition oben
- ENDIF !
- @3_note_k(1,y|,xs%,ys%,th|,k!,g!,u!,t!) ! Note konstr.für 1.Stimme
- IF stimme|=1 ! f erste Stimme |1
- LET xs%=gx%(1,platz%+30) ! x-Startposition links
- LET ys%=gy%(1,platz%+30) ! y-Startposition oben
- ELSE ! f zweite Stimme
- LET xs%=gx%(2,platz%+30) ! x-Startposition links
- LET ys%=gy%(2,platz%+30) ! y-Startposition oben
- ENDIF !
- @3_note_k(2,y|,xs%,ys%,th|,k!,g!,u!,t!) ! Note konstr. für 2.Stimme
- ' ----------------------------------------------------------------------------
- ' |1: Hier hat die Stimmennr nur grafische Bedeutung, dh. es wird
- ' festgelegt, bei welcher Zeile die Note konstruiert und foto-
- ' grafiert wird. Erst bei
- ' Aufruf von 3_note_k(x,...) wird durch x festgelegt, daß die
- ' Note später für die x. Stimme vorgesehen ist (Unterschied:
- ' bei der 1. Stimme geht der Notenhals nach unten,
- ' bei der 2. Stimme geht der Notenhals nach oben.
- ' ----------------------------------------------------------------------------
- RETURN
- > PROCEDURE 3_note_k(s|,ya|,xs%,ys%,t|,k!,g!,u!,t!) ! "
- ' ----------------------------------------------------------------------------
- @4_notenhals(s|,ya|,xs%,ys%) ! Grundnote zeichnen
- @4_notenkopf(ya|,xs%,ys%) ! Grundnote zeichnen
- IF t! ! f Taktstrich gesetzt:
- @4_taktstrich(ya|,xs%,ys%) ! Taktstrich zeichnen
- ENDIF !
- IF k! ! f Note erhöht:
- @4_kreuz(ya|,xs%,ys%) ! Kreuzsymbol zeichnen
- ENDIF !
- IF u! ! f untere Klaviatur gemeint:
- @4_untere_klav(ya|,xs%,ys%) ! Unt.Kl.symbol zeichnen
- ENDIF !
- IF g! ! f Note mit voriger gebunden:
- @4_gebunden(ya|,xs%,ys%) ! Gebundensymbol zeichnen
- ENDIF !
- IF ya|=2 ! oberes c
- @4_obere_hilfslinie_1(xs%,ys%) !
- @4_obere_hilfslinie_2(xs%,ys%) !
- ELSE IF ya|=5 ! oberes h
- @4_obere_hilfslinie_1(xs%,ys%) !
- ELSE IF ya|=7 ! oberes ais oder oberes a
- @4_obere_hilfslinie_1(xs%,ys%) !
- ELSE IF ya|=37 ! unteres c
- @4_untere_hilfslinie(xs%,ys%) !
- ENDIF !
- ' ----------------------------------------------------------------------------
- RETURN
- > PROCEDURE 4_notenhals(st|,yn|,x%,y%) ! "
- ' ----------------------------------------------------------------------------
- IF st|=1 ! f erste Stimme:
- LINE x%+4,y%+yn|,x%+4,y%+46 ! Notenhals nach unten
- ELSE ! f zweite Stimme
- LINE x%+4,y%,x%+4,y%+yn| ! Notenhals nach oben
- ENDIF !
- ' ----------------------------------------------------------------------------
- RETURN
- > PROCEDURE 4_notenkopf(yn|,x%,y%) ! "
- ' ----------------------------------------------------------------------------
- PBOX x%+1,y%+yn|,x%+6,y%+yn|+4 ! Notenkopf
- ' ----------------------------------------------------------------------------
- RETURN
- > PROCEDURE 4_taktstrich(yn|,x%,y%) ! "
- ' ----------------------------------------------------------------------------
- LINE x%+3,y%,x%+3,y%+46 ! Notenhals verstärken
- LINE x%+4,y%,x%+4,y%+46 ! Notenhals verstärken
- ' ----------------------------------------------------------------------------
- RETURN
- > PROCEDURE 4_kreuz(yn|,x%,y%) ! "
- ' ----------------------------------------------------------------------------
- PBOX x%+1,y%+yn|-3,x%+6,y%+yn|-2 ! Kreuzzeichen über Notenkopf
- COLOR 0 ! Radiergummifarbe: weiß
- LINE x%+1,y%+yn|-1,x%+6,y%+yn|-1 !
- COLOR 1 ! normale Zeichenfarbe: schwarz
- ' ----------------------------------------------------------------------------
- RETURN
- > PROCEDURE 4_untere_klav(yn|,x%,y%) ! "
- ' ----------------------------------------------------------------------------
- PBOX x%+1,y%+yn|+6,x%+6,y%+yn|+7 ! Unt.-Kl.-Zeichen unter Notenk.
- COLOR 0 ! Radiergummifarbe: weiß
- LINE x%+1,y%+yn|+5,x%+6,y%+yn|+5 !
- COLOR 1 ! normale Zeichenfarbe: schwarz
- ' ----------------------------------------------------------------------------
- RETURN
- > PROCEDURE 4_gebunden(yn|,x%,y%) ! "
- ' ----------------------------------------------------------------------------
- DEFFILL 0 ! Gebundenzeichen: hohler Kopf
- PBOX x%+2,y%+yn|+1,x%+5,y%+yn|+3 ! Notenkopf
- DEFFILL 1 ! wieder normales Füllmuster
- ' ----------------------------------------------------------------------------
- RETURN
- > PROCEDURE 4_obere_hilfslinie_1(x%,y%) ! "
- ' ----------------------------------------------------------------------------
- LINE x%,y%+7+2,x%+7,y%+7+2 ! Hilfslinie
- ' ----------------------------------------------------------------------------
- RETURN
- > PROCEDURE 4_obere_hilfslinie_2(x%,y%) ! "
- ' ----------------------------------------------------------------------------
- LINE x%,y%+2+2,x%+7,y%+2+2 ! Hilfslinie
- ' ----------------------------------------------------------------------------
- RETURN
- > PROCEDURE 4_untere_hilfslinie(x%,y%) ! "
- ' ----------------------------------------------------------------------------
- LINE x%,y%+37+2,x%+7,y%+37+2 ! Hilfslinie
- ' ----------------------------------------------------------------------------
- RETURN
- ' ..............................................................................
- > PROCEDURE 1_klaviatur_fotografieren
- ' ----------------------------------------------------------------------------
- LOCAL y2% ! unten
- ' ............................................................................
- LET y2%=15 ! unten=Menühöhe-1
- GET 0,0,639,y2%,gkl$ ! Klaviatur fotografieren
- ' ----------------------------------------------------------------------------
- RETURN
- > PROCEDURE 1_notenschluessel_fotografieren
- ' ----------------------------------------------------------------------------
- LOCAL x%,y% ! Koord. für GET
- ' ............................................................................
- LET x%=gx%(1,319) ! Erst mal Hintergrund löschen:
- LET y%=gy%(1,319) !
- ' ............................................................................
- GET x%-2,y%,x%+15,y%+45,gns$ ! fertigen Notenschl.fotogr.
- ' ----------------------------------------------------------------------------
- RETURN
- > PROCEDURE 1_notenbilder_fotografieren
- ' ----------------------------------------------------------------------------
- @2_leerbild_fotografieren ! Leernote für Radiergummifkt.
- @2_pause_fotografieren ! Pausenzeichen
- ' ............................................................................
- FOR i|=1 TO 25 ! Noten von 2 Oktaven durch
- @2_note_fotografieren(1,0*80+i|,i|,0,0,0) ! ungeb., ob.kl., kein Tktstr.
- @2_note_fotografieren(2,0*80+i|,i|,0,0,1) ! ungeb., ob.kl., Tktstr.
- @2_note_fotografieren(1,1*80+i|,i|,1,0,1) ! geb., ob.kl., Tktstr.
- @2_note_fotografieren(2,1*80+i|,i|,1,0,0) ! geb., ob.kl., kein Tktstr.
- @2_note_fotografieren(1,2*80+i|,i|,0,1,0) ! ungeb., unt.kl., kein Tktstr.
- @2_note_fotografieren(2,2*80+i|,i|,0,1,1) ! ungeb., unt.kl., Tktstr.
- @2_note_fotografieren(1,3*80+i|,i|,1,1,1) ! geb., unt.kl., Tktstr.
- @2_note_fotografieren(2,3*80+i|,i|,1,1,0) ! geb., unt.kl., kein Tktstr.
- NEXT i| ! nächste Note
- ' ----------------------------------------------------------------------------
- RETURN
- > PROCEDURE 2_leerbild_fotografieren
- ' ----------------------------------------------------------------------------
- LOCAL xs% ! x-Startposition links
- LOCAL ys% ! y-Startposition oben
- ' ............................................................................
- LET xs%=gx%(1,74) ! x-Startposition links
- LET ys%=gy%(1,74) ! y-Startposition oben
- GET xs%,ys%,xs%+7,ys%+44,gb$(1,0) ! Leernote fotografieren
- GET xs%,ys%,xs%+7,ys%+44,gb$(2,0) ! Leernote fotografieren
- ' ----------------------------------------------------------------------------
- RETURN
- > PROCEDURE 2_pause_fotografieren
- ' ----------------------------------------------------------------------------
- LOCAL x% ! x-Startposition links
- LOCAL y% ! y-Startposition oben
- ' ............................................................................
- LET x%=gx%(1,79) ! x-Startposition links
- LET y%=gy%(1,79) ! y-Startposition oben
- ' ............................................................................
- GET x%,y%,x%+7,y%+44,gb$(1,26) ! Pausennote fotografieren
- GET x%,y%,x%+7,y%+44,gb$(2,26) ! Pausennote fotografieren
- ' ............................................................................
- LET x%=gx%(1,76) ! x-Startposition links
- LET y%=gy%(1,76) ! y-Startposition oben
- ' ............................................................................
- GET x%,y%,x%+7,y%+44,gb$(1,26+32) ! Pausennote mit Taktstr.1.Stim.
- GET x%,y%,x%+7,y%+44,gb$(2,26+32) ! Pausennote mit Taktstr.2.Stim.
- ' ----------------------------------------------------------------------------
- RETURN
- > PROCEDURE 2_note_fotografieren(stimme|,platz%,th|,g!,u!,t!)
- ' ----------------------------------------------------------------------------
- ' th| ! Tonhöhe (1-25)
- ' g! ! Gebundenzeichen
- ' u! ! Untere Klaviatur
- ' t! ! Taktstrich
- '
- LOCAL c$ ! Codierung für Notenfoto
- LOCAL yan| ! y-Anfang Notenkopf (Abkürzung)
- LOCAL y| ! Tonkopfstartabkürzung
- LOCAL xs% ! x-Startposition links
- LOCAL ys% ! y-Startposition oben
- LOCAL k! ! Kreuzflag
- ' ............................................................................
- SELECT th| ! betrachte tonhoehe
- CASE 2,4,7,9,11,14,16,19,21,23 ! f schwarze Taste
- LET k!=TRUE ! Kreuzflag setzen
- ENDSELECT !
- ' ............................................................................
- LET y|=gyan|(th|) ! Arrayeintrag abkürzen
- IF stimme|=1 ! f erste Stimme |1
- LET xs%=gx%(1,platz%) ! x-Startposition links
- LET ys%=gy%(1,platz%) ! y-Startposition oben
- ELSE ! f zweite Stimme
- LET xs%=gx%(2,platz%) ! x-Startposition links
- LET ys%=gy%(2,platz%) ! y-Startposition oben
- ENDIF !
- LET c$=STR$(ABS(g!)) ! Gebundenzeichen codieren
- LET c$=c$+STR$(ABS(u!)) ! Unt-Kl.-Zeichen codieren
- LET c$=c$+STR$(ABS(t!)) ! Taktstrich codieren
- LET c$=c$+BIN$(th|,5) ! Tonhöhe codieren
- GET xs%,ys%,xs%+7,ys%+44,gb$(1,VAL("%"+c$)) ! Note fotografieren
- ' ............................................................................
- IF stimme|=1 ! f erste Stimme |1
- LET xs%=gx%(1,platz%+30) ! x-Startposition links
- LET ys%=gy%(1,platz%+30) ! y-Startposition oben
- ELSE ! f zweite Stimme
- LET xs%=gx%(2,platz%+30) ! x-Startposition links
- LET ys%=gy%(2,platz%+30) ! y-Startposition oben
- ENDIF !
- LET c$=STR$(ABS(g!)) ! Gebundenzeichen codieren
- LET c$=c$+STR$(ABS(u!)) ! Unt-Kl.-Zeichen codieren
- LET c$=c$+STR$(ABS(t!)) ! Taktstrich codieren
- LET c$=c$+BIN$(th|,5) ! Tonhöhe codieren
- GET xs%,ys%,xs%+7,ys%+44,gb$(2,VAL("%"+c$)) ! Note fotografieren
- ' ----------------------------------------------------------------------------
- ' |1: Hier hat die Stimmennr nur grafische Bedeutung, dh. es wird
- ' festgelegt, bei welcher Zeile die Note konstruiert und foto-
- ' grafiert wird.
- ' ----------------------------------------------------------------------------
- RETURN
- ' ..............................................................................
- > PROCEDURE 1_workscreen_menue
- ' ----------------------------------------------------------------------------
- LOCAL a$ ! Lesestring
- RESTORE hauptmenue ! Lesezeiger initialisieren
- FOR i|=1 TO 4 ! alle Abkürzungen durch
- READ a$ ! Befehlsabkürzung einlesen
- LET gm$=gm$+a$ ! Menüstring ergänzen
- EXIT IF i|=4 ! hinter letzt.Eintr.kein " "
- LET gm$=gm$+" " ! Trenn-Leerplatz zw. Einträgen
- NEXT i| ! nächste Abkürzung
- @2_workscreen_menue_zeigen !
- ' ----------------------------------------------------------------------------
- ' Hier wird die Menüzeile, die erste Zeile ganz oben am Arbeitsbild-
- ' schirm geschrieben.
- ' ----------------------------------------------------------------------------
- RETURN
- > PROCEDURE 2_workscreen_menue_zeigen
- ' ----------------------------------------------------------------------------
- LOCAL m$ ! Modus-Text
- ' ............................................................................
- IF NOT gmidi! ! f Midi ausgeschaltet:
- PUT 0,0,gkl$ ! Klaviatur anzeigen
- ELSE ! f Midi eingeschaltet:
- LET m$="Modus: Stückbearbeitung über Midi" ! Modus angeben
- PRINT AT(1,1);m$;SPACE$(80-LEN(m$)); ! Menüzeile anzeigen
- PRINT AT(80-LEN(gname$),1);gname$; ! akt. Stücknamen anzeigen
- PRINT CHR$(27);CHR$(112); ! Revers ein
- PRINT CHR$(27);CHR$(113); ! Revers aus
- ENDIF !
- ' ............................................................................
- SHOWM ! Mauspfeil sichtbar machen
- ' ----------------------------------------------------------------------------
- RETURN
- > PROCEDURE 1_cursor_setzen
- ' ----------------------------------------------------------------------------
- PUT gx%(gs|,gc%),gy%(gs|,gc%),gb$(gs|,0),8 ! Leernote auf Platz 1 invers.
- ' ----------------------------------------------------------------------------
- RETURN
- ' ------------------------------------------------------------------------------
- > PROCEDURE 0_sonstige_vorbereitungen
- ' ----------------------------------------------------------------------------
- @1_dateiname_kreieren(gname$) ! aktueller Stückname
- @1_druckeranpassung !
- @1_midi_sounds_setzen !
- @4_hauptfile_laden(-1) ! Parameter -1 sagt:Prg-Start |1
- ' ----------------------------------------------------------------------------
- ' |1: Nicht bei PD-Version, da sonst kein Start aus Ordnern möglich!
- ' ----------------------------------------------------------------------------
- RETURN
- > PROCEDURE 1_dateiname_kreieren(VAR name$)
- ' ----------------------------------------------------------------------------
- LET name$="XXX"+RIGHT$(DATE$,1) ! Nr.+Jahr in Neunzigern: 199x
- LET name$=name$+LEFT$(DATE$,2) ! Wochentag
- LET name$=name$+MID$(DATE$,4,2) ! Monat
- ' ----------------------------------------------------------------------------
- RETURN
- > PROCEDURE 1_druckeranpassung
- ' ----------------------------------------------------------------------------
- LOCAL r% ! Druckparameter
- LOCAL a$ ! Binärstring
- ' ............................................................................
- LET r%=XBIOS(33,-1) ! Druckparameter lesen
- ' PRINT a$ ! test
- LET a$=BIN$(r%) ! Binär
- MID$(a$,LEN(a$)-2)="1" ! 960 Pkte GFA-Handb: 12 - 25
- LET r%=VAL("&X"+a$) ! Dezimal
- LET r%=XBIOS(33,r%) ! Parameter setzen
- ' LET r%=XBIOS(33,-1) ! Parameter lesen / test
- ' LET a$=BIN$(r%) ! test
- ' PRINT a$ ! test
- ' ----------------------------------------------------------------------------
- RETURN
- > PROCEDURE 1_midi_sounds_setzen
- ' ----------------------------------------------------------------------------
- IF gmidi! ! f Midi eingeschaltet:
- OUT 3,192,gk1| ! Sound Kanal 1
- OUT 3,193,gk2| ! Sound Kanal 2
- OUT 3,194,gk3| ! Sound Kanal 3
- ENDIF !
- ' ----------------------------------------------------------------------------
- RETURN
- ' ##############################################################################
- ' H A U P T P R O G R A M M E B E N E :
- ' ##############################################################################
- > PROCEDURE 0_oberste_schleife_hauptprogramm
- ' ----------------------------------------------------------------------------
- LOCAL hptm! ! Hauptmenüschalter
- LOCAL t| ! Maustaste
- LOCAL x% ! x-Mauskoordinate
- LOCAL y% ! y-Mauskoordinate
- LOCAL n% ! Tastatur
- LOCAL u% ! Umschalttaste
- LOCAL m$ ! Klaviatur
- ' ............................................................................
- DO !
- ' ..........................................................................
- MOUSE x%,y%,t| ! Maustaste
- KEYLOOK n% ! Tastatur
- LET n%=BCLR(n%,28) ! CapsLock-Bit ausschalten
- LET m$=INPMID$ ! Klaviatur
- LET u%=BIOS(11,-1) ! Umschalttaste erfahren
- ' ..........................................................................
- IF y%<17 AND (gmidi! OR hptm!) ! f Maus auf Menü und Midi ein
- @1_hauptmenue !
- LET hptm!=FALSE ! Hauptmenü ausschalten
- @1_ton_aus !
- ELSE IF y%<17 AND (NOT gmidi!) AND t|<>0 ! f Maus auf Klaviatur &Midi ein
- @1_simuliere_midi(t|,x%,u%,hptm!,n%,m$) !
- @1_klaviaturanalyse(m$,u%,n%) ! Eingabe analysieren |1
- @2_workscreen_menue_zeigen !
- @1_ton_aus !
- ELSE IF t| ! f Maustaste gedrückt:
- @1_mausanalyse(x%,y%,t|,u%) ! Eingabe analysieren
- @2_workscreen_menue_zeigen !
- @1_ton_aus !
- ELSE IF n% AND n%<>3.73558E+06 AND n%<>3.01476E+06 ! f Tastaturtaste gedrückt:
- @1_tastaturanalyse(n%) ! Eingabe analysieren
- @2_workscreen_menue_zeigen !
- @1_ton_aus !
- ELSE IF m$<>"" OR n%=3.73558E+06 OR n%=3.01476E+06 ! f Kl.- v Space v 'c' gedrückt:
- @1_klaviaturanalyse(m$,u%,n%) ! Eingabe analysieren |1
- @2_workscreen_menue_zeigen !
- @1_ton_aus !
- ENDIF !
- ' ..........................................................................
- LOOP !
- ' ----------------------------------------------------------------------------
- ' |1: Bios-Funktion untersucht, ob Umschalttaste gedrückt.
- ' ----------------------------------------------------------------------------
- RETURN
- > PROCEDURE 1_ton_aus
- ' ----------------------------------------------------------------------------
- IF gmidi! ! f Midi ein:
- @4_alter_ton_aus_auf_kanal_1 ! Kanal 1 entspricht Stimme 1
- @4_alter_ton_aus_auf_kanal_2 ! Kanal 2 entspricht Stimme 2
- @4_alter_ton_aus_auf_kanal_3 ! Schlagzeug aus (Taktstrich)
- ELSE ! f Midi aus
- WAVE 0,0 !
- ENDIF !
- ' ----------------------------------------------------------------------------
- ' PROCEDURE 4_programmende(w|)
- ' ----------------------------------------------------------------------------
- RETURN
- ' ------------------------------------------------------------------------------
- > PROCEDURE 1_hauptmenue
- ' ----------------------------------------------------------------------------
- LOCAL i| ! Zähler für Menüeinträge
- LOCAL t| ! Maustastenmerker
- LOCAL a| ! Nr. des gewählten Menüeintrags
- DIM h$(10) ! Hauptmenüeintragsliste
- DIM g!(gm|) ! Boolearray für Menü
- ' ............................................................................
- RESTORE hauptmenue ! Readzeiger auf Position
- REPEAT ! Leseschleife
- INC i| ! Eintragszähler erhöhen
- READ h$(i|) ! Hauptmenüeintrag lesen
- UNTIL h$(i|)="##" ! Raus f nix eingelesen
- DEC i| ! Anzahl der Hauptmenüeinträge
- ' ............................................................................
- nochmal_hauptmenue: ! Hauptmenüschleife A n f a n g
- PRINT AT(1,1);gm$;SPACE$(80-LEN(gm$)); ! Menüzeile anzeigen
- PRINT AT(80-LEN(gname$),1);gname$; ! akt. Stücknamen anzeigen
- PRINT CHR$(27);CHR$(112); ! Revers ein
- PRINT CHR$(27);CHR$(113); ! Revers aus
- SHOWM ! Mauspfeil sichtbar machen
- @m(0,-1,0,-1,0,0,0,1,0,i|,1,t|,a|,h$(),g!()) ! großes Menü ausfahren
- ERASE g!() ! Boolearray für Menü
- IF a|=0 OR MOUSEY>16 ! F Abbr:nicht auf Menü+linkeMt.
- GOTO raus_hauptmenue ! oder Maus unterhalb Menü
- ENDIF !
- @2_um(a|,t|) ! Untermenü ausfahren
- @1_ton_aus !
- PRINT AT(1,1);gm$;SPACE$(80-LEN(gm$)); ! Menüzeile anzeigen
- PRINT AT(80-LEN(gname$),1);gname$; ! akt. Stücknamen anzeigen
- PRINT CHR$(27);CHR$(112); ! Revers ein
- PRINT CHR$(27);CHR$(113); ! Revers aus
- IF t|<>2 ! F nicht 'Eingabe fortsetzen':
- GOTO nochmal_hauptmenue ! Hauptmenüschleife E n d e
- ENDIF !
- ' ............................................................................
- raus_hauptmenue: !
- ERASE h$() ! Arrays löschen
- SHOWM ! Mauspfeil sichtbar machen
- ' ----------------------------------------------------------------------------
- RETURN
- > PROCEDURE 2_um(w|,VAR m|)
- ' ----------------------------------------------------------------------------
- ' w| ! Nr des gew.Eintr. im Hauptmenü
- ' m| ! Abbruchflag,2=Abbr,sonst=weitr
- LOCAL i| ! Zähler für Menüeinträge
- LOCAL q| ! Nr. des gewählten Menüeintrags
- LOCAL b$ ! Bildschirmspeichervariable
- DIM m$(33) ! Menüeintragsliste
- DIM k!(33) ! Dummyarray
- ' ............................................................................
- SELECT w| ! Nr. des gewählten Eintrags
- CASE 1 ! Eintrag Nr. 1:
- RESTORE diskette ! Read-Zeiger setzen
- CASE 2 ! Eintrag Nr. 2:
- RESTORE arbeiten ! Read-Zeiger setzen
- CASE 3 ! Eintrag Nr. 3:
- RESTORE blockfkt ! Read-Zeiger setzen
- CASE 4 ! Eintrag Nr. 4:
- RESTORE prg_ende ! Read-Zeiger setzen
- ENDSELECT ! Ende der Verzweigung
- ' ............................................................................
- REPEAT ! Leseschleife
- INC i| ! Eintragszähler erhöhen
- READ m$(i|) ! Hauptmenüeintrag lesen
- UNTIL m$(i|)="##" ! Raus f nix eingelesen
- DEC i| ! Anzahl der Untermenüeinträge
- ' ............................................................................
- IF w|=2 ! f Arbeiten gewählt:
- IF gmidi! ! f Midi eingeschaltet:
- LET m$(1)="Midi ausschalten" !
- ELSE ! f Midi ausgeschaltet:
- LET m$(1)="Midi einschalten" !
- ENDIF !
- IF gnotencode! ! f Nr-Ton-Cod. eingeschaltet:
- LET m$(2)="Nr-Ton-Codierung ausschalten" !
- ELSE ! f Nr-Ton-Cod. ausgeschaltet:
- LET m$(2)="Nr-Ton-Codierung einschalten" !
- ENDIF !
- IF gtaktschl! ! f Taktschlagz. eingeschaltet:
- LET m$(3)="Taktschlagzeug ausschalten" !
- ELSE ! f Taktschlagz. ausgeschaltet:
- LET m$(3)="Taktschlagzeug einschalten" !
- ENDIF !
- ENDIF !
- ' ............................................................................
- SGET b$ ! Bildschirm retten
- @m(0,-1,0,-1,0,0,-1,2+(w|-1)*10,1,1,i|,m|,q|,m$(),k!())
- SPUT b$ ! Bildschirm wiederherstellen
- ' ............................................................................
- IF m|=2 ! F Abbruch gewählt:
- LET m|=1 ! Abbruchflag wieder löschen
- GOTO raus_untermenue !
- ENDIF !
- @3_analys(w|,q|,m|) !
- raus_untermenue: !
- ERASE m$(),k!() ! Arrays löschen
- ' ----------------------------------------------------------------------------
- RETURN
- > PROCEDURE 3_analys(w|,q|,VAR n|)
- ' ----------------------------------------------------------------------------
- ' w| ! Nr des gew Eintr im Hauptmenü
- ' q| ! Nr des gew Eintr im Untermenü
- ' n| ! =2 für 'Eingabe fortsetzen
- ' ............................................................................
- IF w|=1 AND q|=1 ! S P E I C H E R
- @4_accessories !
- ELSE IF w|=1 AND q|=3 !
- @4_stueck_von_diskette_laden !
- ELSE IF w|=1 AND q|=4 !
- @4_stueck_auf_diskette_abspeichern !
- ELSE IF w|=1 AND q|=6 !
- @4_stueck_aus_hauptfile_laden !
- ELSE IF w|=1 AND q|=7 !
- @4_stueck_in_hauptfile_abspeichern !
- ELSE IF w|=1 AND q|=9 !
- @4_hauptfile_laden(0) !
- ELSE IF w|=1 AND q|=10 !
- @4_hauptfile_abspeichern !
- ELSE IF w|=1 AND q|=11 !
- @4_bestimmte_stuecke_loeschen !
- ELSE IF w|=1 AND q|=13 !
- @4_zweites_hauptfile_laden !
- ELSE IF w|=1 AND q|=14 !
- @4_erstes_u_zweites_hauptfile_vertauschen !
- ELSE IF w|=1 AND q|=15 !
- @4_best_stuecke_ins_zweite_hptfle_kop !
- ELSE IF w|=1 AND q|=17 !
- @4_file_loeschen !
- ELSE IF w|=1 AND q|=18 !
- @4_rename_file !
- ELSE IF w|=2 AND q|=1 ! -----------------------------
- @4_midi_ein_ausschalten !
- ELSE IF w|=2 AND q|=2 !
- @4_notencode_ausschalten !
- ELSE IF w|=2 AND q|=3 !
- @4_taktschlagzeug_ausschalten !
- ELSE IF w|=2 AND q|=5 !
- @4_gebundenzeichen_setzen_loeschen ! A R B E I T E N
- ELSE IF w|=2 AND q|=6 !
- @4_unt_klav_setzen_loeschen !
- ELSE IF w|=2 AND q|=7 !
- @4_taktstrich_setzen_loeschen !
- ELSE IF w|=2 AND q|=9 !
- @4_basistonlaenge_veraendern !
- ELSE IF w|=2 AND q|=10 !
- @4_bestimmte_stuecke_spielen !
- ELSE IF w|=2 AND q|=11 !
- @4_best_st_direkt_hintereinander_sp !
- ELSE IF w|=2 AND q|=12 !
- @4_alle_stuecke_ab_nr_x_spielen !
- ELSE IF w|=2 AND q|=14 !
- @4_inhaltsverzeichnis_korrigieren !
- ELSE IF w|=2 AND q|=15 !
- @4_inhaltsverzeichnis_alph_sortieren !
- ELSE IF w|=2 AND q|=17 !
- @4_inhaltsverz_vom_hauptfile_drucken !
- ELSE IF w|=2 AND q|=18 !
- @4_akt_stueck_mit_extra_kopfzeile_drucken !
- ELSE IF w|=2 AND q|=19 !
- @4_bestimmte_stuecke_drucken !
- ELSE IF w|=3 AND q|=1 ! -----------------------------
- @4_block_anfang_ende_setzen ! B L O C K F K T
- ELSE IF w|=3 AND q|=2 AND gbe%<>0 !
- @4_blockmarkierung_loeschen !
- ELSE IF w|=3 AND q|=4 !
- @4_block_kopieren !
- ELSE IF w|=3 AND q|=6 AND gbe%<>0 !
- @4_blocknotenlaengen_verdoppeln !
- ELSE IF w|=3 AND q|=7 AND gbe%<>0 !
- @4_blocknoten_transponieren !
- ELSE IF w|=3 AND q|=8 AND gbe%<>0 !
- @4_automatisch_taktstrich_setzen !
- ELSE IF w|=3 AND q|=9 AND gbe%<>0 !
- @4_suchen_und_ersetzen_im_block !
- ELSE IF w|=3 AND q|=11 AND gbe%<>0 !
- @4_block_loeschen !
- ELSE IF w|=4 AND q|=1 ! -----------------------------
- @2_helptext ! P R G - E N D E
- ELSE IF w|=4 AND q|=3 !
- ' Edit !
- @4_programmende(1) !
- ELSE IF w|=4 AND q|=5 !
- ' Quit !
- @4_programmende(2) !
- ENDIF !
- ' ----------------------------------------------------------------------------
- RETURN
- ' ..............................................................................
- > PROCEDURE 4_accessories ! S P E I C H E R
- ' ----------------------------------------------------------------------------
- LOCAL i% ! Eintragszähler
- LOCAL bld$ ! Speichervariable für Bildsch.
- DIM eintrag$(30) ! Eintragsarray dimensionieren
- ' ............................................................................
- SGET bld$ ! Bildschirm retten
- CLS ! Bildschirm löschen
- DEFFILL 1,2,4 ! Bildsch so wie hinter Gem-Menü
- PBOX 0,0,gbb%,gbh% ! Füllen
- ' ............................................................................
- RESTORE gemmenuedaten ! Read-Zeiger setzen
- LET i%=-1 ! Starten bei 0
- REPEAT ! Leseschleife
- INC i% ! Eintragszähler erhöhen
- READ eintrag$(i%) ! Eintrag einlesen
- UNTIL eintrag$(i%)="##" ! r f Schlußmarke eingelesen
- LET eintrag$(i%)="" ! letztes (Schlußmarke) löschen
- ' ............................................................................
- MENU eintrag$() ! Gem-Menü,Eintragarray init.
- ON MENU GOSUB 5_accessories ! f gewählt,zur Analysierproz.
- OPENW 0 ! Gem-Menü-Fenster öffnen
- ' ............................................................................
- REPEAT ! Gem-Menü-Hauptschleife
- ON MENU ! Ereignisabfrage
- UNTIL gaccr! ! r f Rausflag fürs Accessory
- ' ............................................................................
- ERASE eintrag$() ! Eintragsarray löschen
- MENU KILL ! Gem-Menü ausschalten
- CLOSEW 0 ! Gem-Menü-Fenster schließen
- DEFFILL 1,2,8 ! Füllmuster wieder schwarz
- LET gaccr!=FALSE ! Rausflag fürs Acc-Menü löschen
- SPUT bld$ ! Bildschirm wiederherstellen
- ' ----------------------------------------------------------------------------
- RETURN
- > PROCEDURE 5_accessories
- ' ----------------------------------------------------------------------------
- ' Hier wird Analysiert, was (außer den Accessories) im Gem-Menü gewählt wurde.
- ' ----------------------------------------------------------------------------
- LOCAL m% ! Eintragsnr des gew. Eintrags
- ' ............................................................................
- MENU OFF ! invert. Eintrag wieder normal
- LET m%=MENU(0) ! Eintragsnummer ermitteln
- ' ............................................................................
- IF m%=1 ! Eintrag: 'Notedita' gewählt:
- @6_programminfo !
- ELSE IF m%=11 ! Eintrag: 'Zurück' gewählt:
- LET gaccr!=TRUE ! Rausflag fürs Acc-Menü setzen
- ENDIF ! Ende der Analyse
- ' ----------------------------------------------------------------------------
- RETURN
- > PROCEDURE 6_programminfo
- ' ----------------------------------------------------------------------------
- LOCAL dummy| !
- LOCAL b$ ! Infostring
- ' ............................................................................
- LET b$="Duedita 1.5||Autor: Martin " !
- LET b$=b$+"Mittelmaier| Ufnaustr.3," !
- LET b$=b$+"1Berlin21" !
- LET b$=b$+"||Bitte schreiben Sie mir Ihre|Me" !
- LET b$=b$+"inung zum Programm!|/Versprochen" !
- LET b$=b$+"!|Mach ich ganz bestimmt!" !
- CLOSEW 0 ! Gem-Menü-Fenster schließen |1
- a_alert(b$,dummy|) !
- OPENW 0 ! Gem-Menü-Fenster öffnen
- ' ............................................................................
- DEFFILL 1,2,4 ! Bildsch so wie hinter Gem-Menü
- BOUNDARY 0 ! Umrahmung ausschalten
- PBOX 0,0,639,399-20 ! Füllen (-20,wegen Menüleiste)
- BOUNDARY 1 ! Umrahmung einschalten
- DEFFILL 1,2,8 ! Füllmuster wieder schwarz
- ' ----------------------------------------------------------------------------
- ' |1: Sonst werden Wahleinträge nicht invers dargestellt.
- ' ----------------------------------------------------------------------------
- RETURN
- > PROCEDURE 4_stueck_von_diskette_laden
- ' ----------------------------------------------------------------------------
- LOCAL a| ! Speicher für Notencharakterist
- LOCAL s| ! Stimmzähler
- LOCAL name$ ! Dateiname
- LOCAL n$ ! Abk.für"
- LOCAL i$ ! Infostring
- ' ............................................................................
- LET i$="Gewählt: S T Ü C K L A D E N" !
- LET i$=i$+" Bisher: " !
- @a_info(i$+gname$) !
- @a_tastaturpuffer_leeren !
- FILESELECT gpfad$+"*.DTA",gname$,name$ ! Fileselectbox aufrufen
- gpfad$=LEFT$(name$,RINSTR(name$,"\")) ! Nur bis letztem Backslash
- ' ............................................................................
- IF name$<>"" AND EXIST(name$) ! f was ausgewählt:
- ' ..........................................................................
- LET i$="Folgendes Stück wird geladen: " !
- @a_info(i$+name$) !
- @5_aut_extension("DTA",name$) !
- LET n$=name$ !
- LET n$=RIGHT$(n$,LEN(n$)-RINSTR(n$,"\")) ! Nur ab letztem Backslash
- LET n$=LEFT$(n$,INSTR(n$,".")-1) ! Name ohne Extension betrachten
- LET guname$=gname$ ! Undo-Sicherungskopie vom Namen
- LET gname$=n$ !
- @3_cursor_loeschen !
- CLR gba%,gbe% ! Blockanfang/ende löschen |1
- OPEN "I",#1,name$ !
- FOR s|=1 TO 2 ! Beide Stimmen durch
- LET gu$(s|)=ga$(s|) ! Undo-sicherungs-kopie
- LET ga$(s|)="" ! Notenstück löschen
- DO ! Notenleseschleife
- EXIT IF EOF(#1) ! raus f Dateiende
- LET a|=INP(#1) ! Notencharakteristik lesen
- EXIT IF a|=255 ! raus f Trennstrich
- LET ga$(s|)=ga$(s|)+CHR$(a|) ! Notenspeicherstring erneuern
- LOOP !
- NEXT s| ! nächste Stimme
- CLOSE #1 !
- ' ..........................................................................
- ELSE IF name$<>"" AND NOT EXIST(name$) ! f was Nicht-Existierendes ausg
- ' ..........................................................................
- @5_aut_extension("DTA",name$) !
- LET n$=name$ !
- LET n$=RIGHT$(n$,LEN(n$)-RINSTR(n$,"\")) ! Nur ab letztem Backslash
- LET i$="Neues Stück namens "+n$+" ?" !
- LET i$=i$+" / Ja | Nein" !
- @a_alert(i$,m|) !
- IF m|=1 ! f ja:
- LET gu$(1)=ga$(1) ! Undo-Sicherungskopie
- LET gu$(2)=ga$(2) ! "
- LET ga$(1)="" ! Stück leeren
- LET ga$(2)="" ! "
- LET n$=LEFT$(n$,INSTR(n$,".")-1) ! Name ohne Extension betrachten
- LET guname$=gname$ ! Undo-Sicherungskopie vom Namen
- LET gname$=n$ ! Neuer Stückname
- ENDIF !
- ' ..........................................................................
- ENDIF !
- ' ............................................................................
- @5_neues_stueck_zeigen !
- ' ----------------------------------------------------------------------------
- ' |1: Aber nicht gbs| (Blockstimme) löschen, denn sonst, kann man
- ' Block aus altem Stück nicht in neues kopieren + gleichzeitig
- ' zeigen.
- ' ----------------------------------------------------------------------------
- RETURN
- > PROCEDURE 5_neues_stueck_zeigen
- ' ----------------------------------------------------------------------------
- LET gs|=2 ! Erst 2. Stimme abbilden
- @6_noten_nur_zeigen(gs|,1,gm%) !
- LET gs|=1 ! Dann 1. Stimme abbilden
- @6_noten_nur_zeigen(gs|,1,gm%) !
- @2_cursor_neu_setzen(LEN(ga$(1))+1,0,gs|) !
- @2_workscreen_menue_zeigen !
- ' ----------------------------------------------------------------------------
- RETURN
- > PROCEDURE 6_noten_nur_zeigen(s|,a%,e%)
- ' ----------------------------------------------------------------------------
- LOCAL i% ! Notenzähler
- ' ............................................................................
- IF e%>gm% ! f letzte Note größer erlaubt:
- LET e%=gm% ! nimm letzte erlaubte Note
- ENDIF !
- ' ............................................................................
- FOR i%=a% TO e% ! Alle gewünschten Töne durch
- @3_ton_zeichnen(i%,s|) !
- NEXT i% ! Nächster Ton
- ' ----------------------------------------------------------------------------
- ' PROCEDURE 2_backspace
- ' PROCEDURE 4_blockmarkierung_loeschen
- ' PROCEDURE 2_block_kopieren(p%)
- ' PROCEDURE 2_block_loeschen
- ' PROCEDURE 2_blocknotenlaengen_verdoppeln
- ' PROCEDURE 2_undo
- ' ----------------------------------------------------------------------------
- RETURN
- > PROCEDURE 4_stueck_auf_diskette_abspeichern
- ' ----------------------------------------------------------------------------
- LOCAL ok! ! Diskspeicherfrageflag
- LOCAL s| ! Stimmzähler
- LOCAL i% ! Notenzähler
- LOCAL name$ ! Dateiname
- LOCAL n$ ! Abk.für"
- LOCAL i$ ! Infostring
- ' ............................................................................
- LET i$="Gewählt: S T Ü C K " !
- LET i$=i$+"A B S P E I C H E R N " !
- LET i$=i$+" Bisher: "+gname$ !
- @a_info(i$) !
- @a_tastaturpuffer_leeren !
- ' ............................................................................
- REPEAT !
- FILESELECT gpfad$+"*.DTA",gname$,name$ ! Fileselectbox aufrufen
- gpfad$=LEFT$(name$,RINSTR(name$,"\")) ! Nur bis letztem Backslash
- IF EXIST(name$) !
- KILL name$ !
- ENDIF !
- @5_diskplatz(name$,650,ok!) ! Genügend Diskettenspeicher ?
- UNTIL ok! OR name$="" !
- ' ............................................................................
- IF name$<>"" ! f was ausgewählt:
- @5_aut_extension("DTA",name$) !
- LET n$=name$ !
- LET n$=RIGHT$(n$,LEN(n$)-RINSTR(n$,"\")) ! Nur ab letztem Backslash
- LET n$=LEFT$(n$,INSTR(n$,".")-1) ! Name ohne Extension betrachten
- LET gname$=n$ !
- LET i$="Stück wird gespeichert unter " !
- @a_info(i$+name$) !
- OPEN "O",#1,name$ !
- FOR s|=1 TO 2 ! Beide Stimmen durch
- FOR i%=1 TO LEN(ga$(s|)) ! Alle Noten einer Stimme durch
- OUT #1,ASC(MID$(ga$(s|),i%,1)) ! Notencharakteristik raus
- NEXT i% ! nächste Note
- OUT #1,255 ! Trennung zw. den den 2 Stimmen
- NEXT s| ! nächste Stimme
- CLOSE #1 !
- ENDIF !
- ' ............................................................................
- @2_workscreen_menue_zeigen !
- ' ----------------------------------------------------------------------------
- RETURN
- > PROCEDURE 5_diskplatz(na$,soll%,VAR ok!)
- ' ----------------------------------------------------------------------------
- LOCAL dummy| !
- LOCAL l| ! Laufwerksnummer
- LOCAL a% ! Verfügbarer Diskspeicher
- LOCAL i$ ! Info
- ' ............................................................................
- IF na$="" ! f Abbruch gewählt:
- GOTO raus_5_diskplatz !
- ENDIF !
- ' ............................................................................
- LET l|=ASC(LEFT$(na$,1))-65 ! Laufwerksnummer anhand Pfad f.
- LET i$="Der freie Platz auf dem Laufwerk " !
- LET i$=i$+CHR$(l|+65)+" wird errechnet." !
- @a_info(i$) !
- LET a%=DFREE(l|) ! Wieviel Platz auf Laufwerk?
- ' ............................................................................
- IF a%>soll% ! f genügend Platz
- LET ok!=TRUE ! ok geben
- ELSE !
- LET i$="Nicht genug Platz |auf der " !
- LET i$=i$+"Diskette!||" !
- LET i$=i$+"Soll-Wert: "+STR$(soll%)+"|" !
- LET i$=i$+"Ist-Wert: "+STR$(a%)+"||" !
- LET i$=i$+"/So ein Mist!" !
- a_alert(i$,dummy|) !
- ENDIF !
- ' ............................................................................
- raus_5_diskplatz: !
- ' ----------------------------------------------------------------------------
- RETURN
- > PROCEDURE 5_aut_extension(soll$,VAR n$)
- ' ----------------------------------------------------------------------------
- LOCAL ext$ ! String für Extension
- ' ............................................................................
- LET ext$=RIGHT$(n$,LEN(n$)-INSTR(n$,".")) ! Nur Extension betrachten
- IF ext$=n$ ! f keine Extension:
- LET n$=n$+"."+soll$ ! Extension hinzufügen
- ELSE IF ext$<>soll$ ! f Bockmist eingegeben
- LET n$=LEFT$(n$,INSTR(n$,".")-1) ! Name ohne Extension betrachten
- LET n$=n$+"."+soll$ ! Extension hinzufügen
- ENDIF !
- ' ----------------------------------------------------------------------------
- RETURN
- > PROCEDURE 4_stueck_aus_hauptfile_laden
- ' ----------------------------------------------------------------------------
- LOCAL a| ! Wahlvariable für Menü
- LOCAL m| ! Maustastenvar. für Menü
- LOCAL i$ ! Infostring
- ' ............................................................................
- LET i$="Gewählt: Stück aus Hauptfile laden." !
- LET i$=i$+" bisher:"+gname$ ! alten Namen auch ausgeben
- @5_ein_stueck_aus_hauptfile(i$,a|,m|) !
- ' ............................................................................
- IF m|<>2 ! f nicht Abbruch gewählt:
- CLR gba%,gbe% ! Blockanfang/ende löschen |1
- LET gu$(1)=ga$(1) ! Undo-Sicherungskopie 1.Stimme
- LET gu$(2)=ga$(2) ! Undo-Sicherungskopie 2.Stimme
- LET ga$(1)=gs$(1,a|) ! Stück übergeben, 1.Stimme
- LET ga$(2)=gs$(2,a|) ! Stück übergeben, 1.Stimme
- LET guname$=gname$ ! Undo-Sicherungskopie vom Namen
- LET gname$=gi$(a|) ! Name aus Inhaltsverzeichnis
- @5_neues_stueck_zeigen !
- ENDIF !
- ' ----------------------------------------------------------------------------
- ' |1: Aber nicht gbs| (Blockstimme) löschen, denn sonst, kann man
- ' Block aus altem Stück nicht in neues kopieren + gleichzeitig
- ' zeigen.
- ' ----------------------------------------------------------------------------
- RETURN
- > PROCEDURE 5_ein_stueck_aus_hauptfile(i$,VAR a|,m|)
- ' ----------------------------------------------------------------------------
- LOCAL c$ ! Bildschirmnegativ
- DIM g!(gm|) ! Boolearray für Menü
- ' ............................................................................
- SGET c$ ! Bildschirm retten
- SPUT gfsb$ ! Fileselectbox ausgeben
- @a_info(i$) !
- ' ............................................................................
- @m(0,0,-1,-1,0,0,-1,4,4,8,20,m|,a|,gi$(),g!())! Menüprozedur aufrufen
- ' ............................................................................
- SPUT c$ ! Bildschirm wieder herstellen
- ERASE g!() ! Boolearray für Menü
- ' ----------------------------------------------------------------------------
- RETURN
- > PROCEDURE 4_stueck_in_hauptfile_abspeichern
- ' ----------------------------------------------------------------------------
- LOCAL dummy| ! Dummy für Alertbox
- LOCAL m| ! Nummer des abzusp. Stücks
- LOCAL i| ! Stückzähler
- LOCAL a$ ! Diverse Texte
- LOCAL bld$ ! Bildschirm retten
- ' ............................................................................
- SGET bld$ ! Bildschirm retten
- SPUT gfsb$ ! Fileselectbox ausgeben
- PRINT AT(1,1);SPACE$(80); ! Menüzeile löschen
- LET a$="In Hauptfile absp./Namen eingeben" !
- LET a$=a$+"(ohne Kleinbchst.,kein Pnkt," !
- LET a$=a$+"0=raus):" !
- PRINT CHR$(27);CHR$(112); ! invers ein
- PRINT AT(1,1);a$; !
- PRINT CHR$(27);CHR$(113); ! invers aus
- PRINT AT(LEN(a$)+2,1); !
- LET a$=gname$ ! Stückname übergeben
- FORM INPUT 8 AS a$ !
- ' ............................................................................
- LET a$=UPPER$(a$) ! wandelt Kleinbuchst in Großb.
- FOR i|=1 TO LEN(a$) ! Namen durch
- IF MID$(a$,i|,1)="." ! Punkt nicht erlaubt
- MID$(a$,i|,1)="X" ! dito ersetzen
- ENDIF !
- NEXT i| !
- ' ............................................................................
- LET m|=gts|+1 ! erst mal vom Maximum ausgehen
- FOR i|=1 TO gts| ! alle Stücke durch
- IF a$=gi$(i|) ! f Name schon vorhanden
- LET m|=i| ! entsprech. Stück überschreiben
- ENDIF !
- NEXT i| !
- IF m|=gts|+1 AND gts|<gm| ! f nix überschrieben wird:
- INC gts| ! Maximum Stückanzahl erhöhen
- ELSE IF m|=gts|+1 ! gts|=gm|,dh. Hauptfile voll:
- LET a$="Nur "+STR$(gm|)+" Stücke möglich!" !
- LET a$=a$+"/Abbruch" !
- @a_alert(a$,dummy|) !
- GOTO raus_4_stueck_in_hauptfile_abspeichern !
- ENDIF !
- ' ............................................................................
- IF a$<>"" AND a$<>"0" ! f nicht Abbruch gewählt:
- LET gname$=a$ ! neuer Stückname zurück
- LET gi$(m|)=a$ ! Stückname ins Inhaltsverz.
- LET gs$(1,m|)=ga$(1) ! Akt. Stück in Stückarray 1.St.
- LET gs$(2,m|)=ga$(2) ! Akt. Stück in Stückarray 2.St.
- @5_fileselectboxfoto(0) ! Hauptfileauswahlfoto
- ENDIF !
- ' ............................................................................
- raus_4_stueck_in_hauptfile_abspeichern: !
- SPUT bld$ ! Bildschirm wiederherstellen
- ' ----------------------------------------------------------------------------
- RETURN
- > PROCEDURE 4_hauptfile_laden(programmstart!)
- ' ----------------------------------------------------------------------------
- LOCAL s| ! Stimmzähler
- LOCAL a| ! Speicher für Notencharakterist
- LOCAL n| ! Stückzähler
- LOCAL dummy% ! siehe Handbuch 6-49,Recall
- LOCAL i% ! Notenzähler
- LOCAL name$ ! Dateiname
- LOCAL n$ ! Abk.für"
- LOCAL a$ ! Abk. für Stückspeicherstring
- LOCAL i$ ! Infostring
- ' ............................................................................
- LET i$="Gewählt: H A U P T F I L E " !
- LET i$=i$+" L A D E N " !
- LET i$=i$+" Bisher: "+ghptfle$ !
- @a_info(i$) !
- @a_tastaturpuffer_leeren !
- nochmal_h_laden_fileselect: ! nochmal File auswählen
- IF programmstart! ! f jetzt Programmstart:
- gpfad$=CHR$(65+GEMDOS(25))+":"+DIR$(0)+"\" ! Aktuellen Pfad ermitteln
- LET name$=gpfad$+ghptfle$ !
- ELSE ! f diese Proc vom Menü ausgerfn
- FILESELECT gpfad$+"*.HFL",ghptfle$,name$ ! Fileselectbox aufrufen
- gpfad$=LEFT$(name$,RINSTR(name$,"\")) ! Nur bis letztem Backslash
- ENDIF !
- ' ............................................................................
- IF name$<>"" AND EXIST(name$) ! f was Existierendes ausgewählt
- ' ..........................................................................
- @5_aut_extension("HFL",name$) !
- LET n$=name$ !
- LET n$=RIGHT$(n$,LEN(n$)-RINSTR(n$,"\")) ! Nur ab letztem Backslash
- LET ghptfle$=n$ !
- LET i$="Hauptfile wird geladen: " !
- @a_info(i$+name$) !
- OPEN "I",#1,name$ !
- INPUT #1,gts| ! Anzahl der Stücke abspeichern
- RECALL #1,gi$(),gts|+1,dummy% ! Inhaltsverz.-Array laden |1
- FOR n|=1 TO gts| ! Alle Stücke durch
- FOR s|=1 TO 2 ! Beide Stimmen durch
- LET a$="" !
- DO ! Notenleseschleife
- EXIT IF EOF(#1) ! raus f Dateiende
- LET a|=INP(#1) ! Notencharakteristik lesen
- EXIT IF a|=255 ! raus f Trennstrich
- LET a$=a$+CHR$(a|) ! Notenspeicherstring erneuern
- LOOP !
- LET gs$(s|,n|)=a$ !
- NEXT s| ! nächste Stimme
- NEXT n| ! nächstes Stück
- CLOSE #1 !
- FOR n|=gts|+1 TO gm| ! restliche Stücknamen durch
- LET gi$(n|)="________" ! Stückname für leeres Stück
- NEXT n| ! nächster Stückname
- ' ..........................................................................
- ELSE IF name$<>"" AND NOT EXIST(name$) ! f was Nicht-Existierendes ausg
- ' ..........................................................................
- @5_aut_extension("HFL",name$) !
- LET n$=name$ !
- LET n$=RIGHT$(n$,LEN(n$)-RINSTR(n$,"\")) ! Nur ab letztem Backslash
- LET i$="Neues Hauptfile namens "+n$+" ?" !
- LET i$=i$+" / Ja | Nein" !
- @a_alert(i$,m|) !
- IF m|=1 ! f ja:
- LET gts|=0 ! Stückanzahl Null setzen
- LET ghptfle$=n$ ! Neuer Hauptfilename
- ELSE ! f nein:
- LET programmstart!=FALSE ! sonst kein Fileselect
- GOTO nochmal_h_laden_fileselect ! nochmal File auswählen
- ENDIF !
- FOR n|=1 TO gm| ! Alle potentiellen Namen durch
- LET gi$(n|)="________" ! Stückname für leeres Stück
- NEXT n| ! nächster Stückname
- ' ..........................................................................
- ENDIF !
- ' ............................................................................
- @2_workscreen_menue_zeigen !
- @5_fileselectboxfoto(-1) ! Hauptfileauswahlfoto
- ' ----------------------------------------------------------------------------
- ' |1: +1, weil Store schon mit 0 zu zählen beginnt, also auch
- ' gi$(0) abgespeichert wird.
- ' ----------------------------------------------------------------------------
- RETURN
- > PROCEDURE 5_fileselectboxfoto(bildrettungsflag!)
- ' ----------------------------------------------------------------------------
- ' Hier wird die Fileselectbox angezeigt und fotografiert. Diese Prozedur wird
- ' auch von '4_stueck_in_hauptfile_abspeichern' aus aufgerufen.
- ' ----------------------------------------------------------------------------
- LOCAL a| ! Wahlvariable für Menü
- LOCAL m| ! Maustastenvar. für Menü
- LOCAL c$ ! Bildschirmnegativ
- DIM g!(gm|) ! Boolearray für Menü
- ' ............................................................................
- IF bildrettungsflag! !
- SGET c$ ! Bildschirm retten
- ENDIF !
- ' ............................................................................
- DEFFILL 1,2,4 ! Bildsch so wie hinter Gem-Menü
- BOUNDARY 0 ! Umrahmung ausschalten
- PBOX 0,0,639,399 ! Füllen
- BOUNDARY 1 ! Umrahmung einschalten
- DEFFILL 1,2,8 ! Füllmuster wieder schwarz
- @2_workscreen_menue_zeigen !
- @m(0,-1,0,0,0,0,-1,4,4,8,20,m|,a|,gi$(),g!()) ! Menüprozedur aufrufen
- SGET gfsb$ ! Fileselectbox fotografieren
- ' ............................................................................
- IF bildrettungsflag! !
- SPUT c$ ! Bildschirm wieder herstellen
- ENDIF !
- ERASE g!() ! Boolearray für Menü
- ' ----------------------------------------------------------------------------
- RETURN
- > PROCEDURE 4_hauptfile_abspeichern
- ' ----------------------------------------------------------------------------
- LOCAL ok! ! Diskspeicherfrageflag
- LOCAL s| ! Stimmzähler
- LOCAL n| ! Stückzähler
- LOCAL i% ! Notenzähler
- LOCAL p% ! Platz
- LOCAL name$ ! Dateiname
- LOCAL n$ ! Abk.für"
- LOCAL a$ ! Abk. für Stückspeicherstring
- LOCAL i$ ! Infostring
- ' ............................................................................
- LET i$="Gewählt: H A U P T F I L E " !
- LET i$=i$+" A B S P E I C H E R N " !
- LET i$=i$+" Bisher: "+ghptfle$ !
- @a_info(i$) !
- @a_tastaturpuffer_leeren !
- ' ............................................................................
- REPEAT !
- FILESELECT gpfad$+"*.HFL",ghptfle$,name$ ! Fileselectbox aufrufen
- gpfad$=LEFT$(name$,RINSTR(name$,"\")) ! Nur bis letztem Backslash
- FOR i|=1 TO gm| ! Alle Stücke durch
- LET p%=p%+LEN(gs$(1,i|))+LEN(gs$(2,i|)) ! Stückplatzerrechnen
- NEXT i| !
- LET p%=p%+gm|*8+10 ! Inhverz. + Sicherheitsraum
- IF EXIST(name$) !
- KILL name$ !
- ENDIF !
- @5_diskplatz(name$,p%,ok!) ! Genügend Diskettenspeicher ?
- UNTIL ok! OR name$="" !
- ' ............................................................................
- IF name$<>"" ! f was ausgewählt:
- ' ..........................................................................
- @5_aut_extension("HFL",name$) !
- LET n$=name$ !
- LET n$=RIGHT$(n$,LEN(n$)-RINSTR(n$,"\")) ! Nur ab letztem Backslash
- LET ghptfle$=n$ !
- LET i$="Hauptfile wird gespeichert unter " !
- @a_info(i$+name$) !
- OPEN "O",#1,name$ !
- PRINT #1,gts| ! Anzahl der Stücke abspeichern
- STORE #1,gi$(),gts|+1 ! Inhaltsverz.-Array absp. |1
- FOR n|=1 TO gts| ! Alle Stücke durch
- FOR s|=1 TO 2 ! Beide Stimmen durch
- LET a$=gs$(s|,n|) ! Stimme des akt. Stücks abk.
- FOR i%=1 TO LEN(a$) ! Alle Noten einer Stimme durch
- OUT #1,ASC(MID$(a$,i%,1)) ! Notencharakteristik raus
- NEXT i% ! nächste Note
- OUT #1,255 ! Trennung zw. den den 2 Stimmen
- NEXT s| ! nächste Stimme
- NEXT n| ! nächstes Stück
- OUT #1,255 ! Trennung zw. 2 Stücken
- CLOSE #1 !
- ' ..........................................................................
- ENDIF !
- ' ............................................................................
- @2_workscreen_menue_zeigen !
- ' ----------------------------------------------------------------------------
- ' |1: +1, weil Store schon mit 0 zu zählen beginnt, also auch
- ' gi$(0) abgespeichert wird.
- ' ----------------------------------------------------------------------------
- RETURN
- > PROCEDURE 4_bestimmte_stuecke_loeschen
- ' ----------------------------------------------------------------------------
- LOCAL a| ! Wahlvariable für Menü
- LOCAL m| ! Maustastenvar. für Menü
- LOCAL i| ! Stückzähler
- LOCAL i$ ! Infostring
- LOCAL c$ ! Bildschirmnegativ
- DIM g!(gm|) ! Boolearray für Menü
- ' ............................................................................
- SGET c$ ! Bildschirm retten
- SPUT gfsb$ ! Fileselectbox ausgeben
- LET i$="Gewählt: bestimmte Stücke löschen." !
- LET i$=i$+" Aktuell: "+gname$ ! aktuellen Stücknamen dazu
- @a_info(i$) !
- @a_tastaturpuffer_leeren !
- ' ............................................................................
- @m(0,0,-1,0,-1,0,-1,4,4,8,20,m|,a|,gi$(),g!())! Menüprozedur aufrufen
- ' ............................................................................
- LET i$="... es wird gelöscht ..." !
- @a_info(i$) !
- REPEAT ! Alle Stücke im Hauptfile durch
- INC i| !
- IF g!(i|) ! f Stück ausgewählt:
- @5_einzelnes_stueck_loeschen(i|,g!()) ! |1
- DEC i| ! sonstüberspringen wir neues i|
- ENDIF !
- UNTIL i|>=gts| OR gts|=0 ! nächstes Stück
- ' ............................................................................
- ERASE g!() ! Boolearray für Menü
- @5_fileselectboxfoto(0) ! Hauptfileauswahlfoto
- SPUT c$ ! Bildschirm wieder herstellen
- ' ----------------------------------------------------------------------------
- ' |1: Auch im Boole-Array, der die löschenden Stücke kennzeichnet,
- ' muß ja die entsprechende Zeile gelöscht werden.
- ' ----------------------------------------------------------------------------
- RETURN
- > PROCEDURE 5_einzelnes_stueck_loeschen(a|,VAR g!())
- ' ----------------------------------------------------------------------------
- LOCAL j| ! Stückzähler
- ' ............................................................................
- FOR j|=a| TO gts| ! Stücke durch ab a| bis Ende-1
- IF j|<gm| ! f < 160
- LET gi$(j|)=gi$(j|+1) ! akt.mit nächstem St.überschr.
- LET gs$(1,j|)=gs$(1,j|+1) ! " 1. Stimme
- LET gs$(2,j|)=gs$(2,j|+1) ! " 2. Stimme
- LET g!(j|)=g!(j|+1) !
- ELSE !
- LET gi$(gm|)="________" ! sonst letzter Stückname dopplt
- LET g!(gm|)=FALSE !
- ENDIF !
- NEXT j| ! nächstes Stück
- ' ............................................................................
- DEC gts| ! Anzahl der Stücke 1 weniger
- ' ----------------------------------------------------------------------------
- RETURN
- > PROCEDURE 4_zweites_hauptfile_laden
- ' ----------------------------------------------------------------------------
- LOCAL s| ! Stimmzähler
- LOCAL a| ! Speicher für Notencharakterist
- LOCAL n| ! Stückzähler
- LOCAL d| ! Dummy
- LOCAL dummy% ! siehe Handbuch 6-49,Recall
- LOCAL i% ! Notenzähler
- LOCAL name$ ! Dateiname
- LOCAL n$ ! Abk.für"
- LOCAL a$ ! Abk. für Stückspeicherstring
- LOCAL i$ ! Infostring
- ' ............................................................................
- LET i$="Gewählt: 2. H A U P T F I L E " !
- LET i$=i$+" L A D E N " !
- LET i$=i$+" Bisher: "+ghptfle2$ !
- @a_info(i$) !
- @a_tastaturpuffer_leeren !
- nochmal_h_2laden_fileselect: ! nochmal File auswählen
- FILESELECT gpfad$+"*.HFL",ghptfle2$,name$ ! Fileselectbox aufrufen
- gpfad$=LEFT$(name$,RINSTR(name$,"\")) ! Nur bis letztem Backslash
- ' ............................................................................
- IF name$<>"" AND EXIST(name$) ! f was Existierendes ausgewählt
- ' ..........................................................................
- @5_aut_extension("HFL",name$) !
- LET n$=name$ !
- LET n$=RIGHT$(n$,LEN(n$)-RINSTR(n$,"\")) ! Nur ab letztem Backslash
- LET ghptfle2$=n$ !
- LET i$="2.Hauptfile wird geladen: " !
- @a_info(i$+name$) !
- OPEN "I",#1,name$ !
- INPUT #1,gts2| ! Anzahl der Stücke abspeichern
- RECALL #1,gi2$(),gts2|+1,dummy% ! Inhaltsverz.-Array laden |1
- FOR n|=1 TO gts2| ! Alle Stücke durch
- FOR s|=1 TO 2 ! Beide Stimmen durch
- LET a$="" !
- DO ! Notenleseschleife
- EXIT IF EOF(#1) ! raus f Dateiende
- LET a|=INP(#1) ! Notencharakteristik lesen
- EXIT IF a|=255 ! raus f Trennstrich
- LET a$=a$+CHR$(a|) ! Notenspeicherstring erneuern
- LOOP !
- IF FRE(0)>LEN(a$) ! f noch RAM-Speicher:
- LET gs2$(s|,n|)=a$ !
- ELSE !
- @a_alert("Zu wenig Speicher!/OK!",d|) !
- LET n|=gts2| ! auch aus 2.Schleife raus
- EXIT IF TRUE ! raus
- ENDIF !
- NEXT s| ! nächste Stimme
- NEXT n| ! nächstes Stück
- CLOSE #1 !
- FOR n|=gts2|+1 TO gm| ! restliche Stücknamen durch
- LET gi2$(n|)="________" ! Stückname für leeres Stück
- NEXT n| ! nächster Stückname
- ' ..........................................................................
- ELSE IF name$<>"" AND NOT EXIST(name$) ! f was Nicht-Existierendes ausg
- ' ..........................................................................
- @5_aut_extension("HFL",name$) !
- LET n$=name$ !
- LET n$=RIGHT$(n$,LEN(n$)-RINSTR(n$,"\")) ! Nur ab letztem Backslash
- LET i$="Neues 2.Hauptfile namens "+n$+" ?" !
- LET i$=i$+" / Ja | Nein" !
- @a_alert(i$,m|) !
- IF m|=1 ! f ja:
- LET gts2|=0 ! Stückanzahl Null setzen
- LET ghptfle2$=n$ ! Neuer Hauptfilename
- ELSE ! f nein:
- LET programmstart!=FALSE ! sonst kein Fileselect
- GOTO nochmal_h_2laden_fileselect ! nochmal File auswählen
- ENDIF !
- FOR n|=1 TO gm| ! Alle potentiellen Namen durch
- LET gi2$(n|)="________" ! Stückname für leeres Stück
- NEXT n| ! nächster Stückname
- ' ..........................................................................
- ENDIF !
- ' ............................................................................
- @2_workscreen_menue_zeigen !
- ' ----------------------------------------------------------------------------
- ' |1: +1, weil Store schon mit 0 zu zählen beginnt, also auch
- ' gi$(0) abgespeichert wird.
- ' ----------------------------------------------------------------------------
- RETURN
- > PROCEDURE 4_erstes_u_zweites_hauptfile_vertauschen
- ' ----------------------------------------------------------------------------
- SWAP gs2$(),gs$() !
- SWAP gi2$(),gi$() !
- SWAP gts2|,gts| !
- SWAP ghptfle2$,ghptfle$ !
- ' ............................................................................
- @2_workscreen_menue_zeigen !
- @5_fileselectboxfoto(-1) ! Hauptfileauswahlfoto
- ' ----------------------------------------------------------------------------
- RETURN
- > PROCEDURE 4_best_stuecke_ins_zweite_hptfle_kop
- ' ----------------------------------------------------------------------------
- LOCAL i| ! Stückzähler
- LOCAL a| ! Wahlvariable für Menü
- LOCAL m| ! Maustastenvar. für Menü
- LOCAL n% ! Tastencode
- LOCAL c$ ! Bildschirmnegativ
- LOCAL i$ ! Infostring
- DIM g!(gm|) ! Boolearray für Menü
- ' ............................................................................
- SGET c$ ! Bildschirm retten
- SPUT gfsb$ ! Fileselectbox ausgeben
- ' ............................................................................
- LET i$="Gewählt: best. Stücke ins " !
- LET i$=i$+"2.Hauptfile kop." !
- LET i$=i$+" Von "+ghptfle$+" nach " !
- LET i$=i$+ghptfle2$ !
- @a_info(i$) !
- @a_tastaturpuffer_leeren !
- ' ............................................................................
- @m(0,0,-1,0,-1,0,-1,4,4,8,20,m|,a|,gi$(),g!())! Menüprozedur aufrufen
- SPUT c$ ! Bildschirm wieder herstellen
- ' ............................................................................
- FOR i|=1 TO gts| ! Alle Stücke im Hauptfile durch
- IF g!(i|) ! f Stück ausgewählt:
- @5_einzelkopie(i|) !
- ENDIF !
- KEYLOOK n% ! Taste anschauen
- EXIT IF n%=65563 ! Raus falls Escape-Taste
- NEXT i| ! nächstes Stück
- ' ............................................................................
- SPUT c$ ! Bildschirm wieder herstellen
- ERASE g!() ! Boolearray für Menü
- ' ----------------------------------------------------------------------------
- RETURN
- > PROCEDURE 5_einzelkopie(nr|)
- ' ----------------------------------------------------------------------------
- IF gts2|<gm| !
- INC gts2| ! Stückzähler 2.Hptfle erhöhen
- LET gs2$(1,gts2|)=gs$(1,nr|) ! 1.Stimme kopieren
- LET gs2$(2,gts2|)=gs$(2,nr|) ! 2.Stimme kopieren
- LET gi2$(gts2|)=gi$(nr|) ! Inhaltsverzeichnis aktualis.
- ENDIF !
- ' ----------------------------------------------------------------------------
- RETURN
- > PROCEDURE 4_file_loeschen
- ' ----------------------------------------------------------------------------
- LOCAL a| ! für Alertbox
- LOCAL i$ ! Infostring
- LOCAL m$ ! Speicher für Filename
- LOCAL kl$ ! Klaviaturnegativ
- ' ............................................................................
- LET i$="Gewählt: File löschen!" ! Info über gewählten Befehl
- PRINT AT(1,1);i$+SPACE$(80-LEN(i$)) !
- ' ............................................................................
- nochmal_file_loeschen: ! Wiederhol-Label
- FILESELECT gpfad$+"*.*",m$,m$ ! Fileselectbox aufrufen
- gpfad$=LEFT$(m$,RINSTR(m$,"\")) ! Nur bis letztem Backslash
- ' ............................................................................
- IF m$="" OR NOT EXIST(m$) ! F Abbruch gewählt:
- GOTO raus_file_loeschen !
- ENDIF !
- IF LEN(m$)>12 ! F Name samt Pfad länger als 12
- LET i$="Gelöscht wird: '" ! Menütext
- LET i$=i$+RIGHT$(m$,12)+"'!/ok!|raus!" !
- @a_alert(i$,a|) !
- ELSE !
- LET i$="Gelöscht wird: '"+m$+"'!/ok!|raus!" !
- @a_alert(i$,a|) !
- ENDIF !
- IF a|=2 ! F Abbruch gewählt:
- GOTO raus_file_loeschen !
- ENDIF !
- PRINT AT(30,1);"'";m$;"' " ! Anzeige des Namens mit pfad
- ' ............................................................................
- KILL m$ !
- ' ............................................................................
- GOTO nochmal_file_loeschen ! Kreislauf, f viel gelöscht
- ' ............................................................................
- raus_file_loeschen: !
- ' ----------------------------------------------------------------------------
- RETURN
- > PROCEDURE 4_rename_file
- ' ----------------------------------------------------------------------------
- ' Hier wird ein File auf der Diskette umbenannt.
- ' ----------------------------------------------------------------------------
- LOCAL ok! ! Flag für Prüfprozedur
- LOCAL a| ! für Alertbox
- LOCAL i$ ! Info
- LOCAL m$ ! Speicher für Filename
- LOCAL neu$ ! Speicher für neuen Namen
- ' ............................................................................
- LET i$="Gewählt: File umbenennen! Jetzt: Um" !
- LET i$=i$+"zubenennendes File anwählen!" ! Info über gewählten Befehl
- PRINT AT(1,1);i$; !
- ' ............................................................................
- FILESELECT gpfad$+"*.*",m$,m$ ! Fileselectbox aufrufen
- gpfad$=LEFT$(m$,RINSTR(m$,"\")) ! Nur bis letztem Backslash
- ' ............................................................................
- IF m$="" OR NOT EXIST(m$) ! F Abbruch gewählt:
- GOTO raus_rename_file !
- ENDIF !
- ' ............................................................................
- @5_eingabe_name(neu$) ! Neuen Namen eingeben
- ' ............................................................................
- LET neu$=LEFT$(m$,RINSTR(m$,"\"))+neu$ ! Pfad der gleiche wie bei m$
- LET i$="Geändert wird: |'"+m$+"'|zu: |'" ! Menütext
- LET i$=i$+neu$+"'/ok!|raus!" !
- @a_alert(i$,a|) !
- IF a|=2 ! F Abbruch gewählt:
- GOTO raus_rename_file !
- ENDIF !
- LET i$="Jetzt wird umbenannt: alt:'"+m$ !
- LET i$=i$+"' neu:'"+neu$+"'" !
- PRINT AT(1,1);i$ !
- ' ............................................................................
- RENAME m$ AS neu$ ! File umbenennen
- ' ............................................................................
- raus_rename_file: !
- ' ----------------------------------------------------------------------------
- RETURN
- > PROCEDURE 5_eingabe_name(VAR x$)
- ' ----------------------------------------------------------------------------
- ' x$ ! Speicher für neuen Namen
- LOCAL i$ ! Info
- ' ............................................................................
- nochmal_name_eingeben: ! Wiederhol-Label
- ' ............................................................................
- REPEAT ! Maus- und Tastaturpuffer
- UNTIL MOUSEK=0 AND INKEY$="" ! entleeren.
- PRINT AT(1,1);SPACE$(80) ! 1. Zeile leer
- PRINT AT(1,1); ! Cursor positionieren
- LET i$=" Neuer Name: (Ohne Pfad [Bsp.: " !
- LET i$=i$+"'NOTEDITA.PRG']) " ! Info Input platz.
- PRINT i$; !
- ' ............................................................................
- INPUT x$ ! Eingabe des neuen Namens
- IF x$="0" ! F Abbruch gewählt:
- GOTO raus_name_eingeben !
- ENDIF !
- ' ............................................................................
- @6_pruef(x$,ok!) ! Überprüfung der Eingabe
- IF NOT ok! ! F nicht ok:
- IF LEN(x$)>12 ! F zu lang
- LET x$=LEFT$(x$,12) ! zurechtstutzen
- ENDIF !
- LET i$="'"+x$+"' ist unmöglicher Dateiname" !
- LET i$=i$+"'"+x$+"!/nochmal!|raus!" !
- @a_alert(i$,a|) !
- IF a|=1 ! F Einsicht:
- GOTO nochmal_name_eingeben !
- ELSE ! F Abbruch gewünscht:
- GOTO raus_name_eingeben !
- ENDIF !
- ENDIF !
- ' ............................................................................
- raus_name_eingeben: !
- ' ----------------------------------------------------------------------------
- RETURN
- > PROCEDURE 6_pruef(n$,VAR o!)
- ' ----------------------------------------------------------------------------
- ' Hier wird geprüft ob in n$ ein brauchbarer Dateiname steht.
- ' ----------------------------------------------------------------------------
- ' n$ ! zu überprüfender Dateiname
- ' o! ! =-1 falls Dateiname ok
- LOCAL fehler! ! Flag für 'Fehler gefunden'
- LOCAL i| ! Zähler für Zeichen
- LOCAL asc| ! Ascii-Wert des akt. Zeichens
- LOCAL ext$ ! Extension
- LOCAL name$ ! Filename ohne Extension
- LOCAL pkt$ ! Punkt zw. Filename und Ext.
- ' ............................................................................
- ' ! Dateiname z.B.'NAME.EXT'
- ' ............................................................................
- IF LEN(n$)<5 ! mind.:'.EXT' + ein Zeichen
- LET fehler!=TRUE ! Fehler gefunden
- GOTO raus_pruef !
- ENDIF !
- ' ............................................................................
- LET ext$=RIGHT$(n$,3) ! Extension ausschneiden
- LET name$=LEFT$(n$,LEN(n$)-4) ! Name ausschneiden
- LET pkt$=LEFT$(RIGHT$(n$,4),1) ! Punkt ausschneiden
- ' ............................................................................
- IF pkt$<>"." ! F hier kein Punkt zu sehen:
- LET fehler!=TRUE ! Fehler gefunden
- GOTO raus_pruef !
- ENDIF !
- ' ............................................................................
- FOR i|=1 TO LEN(name$) ! Name durch
- LET asc|=ASC(MID$(name$,i|,1)) ! Ascci-wert festhalten
- IF asc|<65 OR asc|>90 ! F außerhalb großer Buchstaben
- IF NOT (asc|>47 AND asc|<58) ! F keine Ziffer:
- LET fehler!=TRUE ! Fehler gefunden
- ENDIF !
- ENDIF !
- NEXT i| ! nächster Buchstabe des Namens
- ' ............................................................................
- FOR i|=1 TO LEN(ext$) ! Extension durch
- LET asc|=ASC(MID$(ext$,i|,1)) ! Ascci-wert festhalten
- IF asc|<65 OR asc|>91 ! F außerhalb großer Buchstaben
- IF NOT (asc|>47 AND asc|<58) ! F keine Ziffer:
- LET fehler!=TRUE ! Fehler gefunden
- ENDIF !
- ENDIF !
- NEXT i| ! nächster Buchstabe des Ext.
- ' ............................................................................
- raus_pruef: !
- IF NOT fehler! ! F keinen Fehler gefunden
- LET o!=TRUE ! Rückgabepar auf 'Alles ok'
- ENDIF !
- ' ----------------------------------------------------------------------------
- RETURN
- ' ..............................................................................
- > PROCEDURE 4_midi_ein_ausschalten ! A R B E I T E N
- ' ----------------------------------------------------------------------------
- IF gmidi! !
- LET gmidi!=FALSE !
- ELSE !
- LET gmidi!=TRUE !
- ENDIF !
- ' ----------------------------------------------------------------------------
- RETURN
- > PROCEDURE 4_notencode_ausschalten
- ' ----------------------------------------------------------------------------
- IF gnotencode! !
- LET gnotencode!=FALSE !
- ELSE !
- LET gnotencode!=TRUE !
- ENDIF !
- ' ----------------------------------------------------------------------------
- RETURN
- > PROCEDURE 4_taktschlagzeug_ausschalten
- ' ----------------------------------------------------------------------------
- IF gtaktschl! !
- LET gtaktschl!=FALSE !
- ELSE !
- LET gtaktschl!=TRUE !
- ENDIF !
- ' ----------------------------------------------------------------------------
- RETURN
- > PROCEDURE 4_gebundenzeichen_setzen_loeschen
- ' ----------------------------------------------------------------------------
- LOCAL a| ! Abkürzung für Speicherinhalt
- ' ............................................................................
- LET a|=ASC(MID$(ga$(gs|),gc%,1)) ! Notencharakteristik Abkürzen
- IF a|<>26 AND a|<>26+32 ! f nicht Pause
- LET a|=BCHG(a|,7) ! Gebundenzeichenflag ändern
- MID$(ga$(gs|),gc%,1)=CHR$(a|) ! Änderung abspeichern
- @2_cursor_neu_setzen(gc%,0,gs|) !
- ENDIF !
- ' ----------------------------------------------------------------------------
- RETURN
- > PROCEDURE 4_unt_klav_setzen_loeschen
- ' ----------------------------------------------------------------------------
- LOCAL a| ! Abkürzung für Speicherinhalt
- ' ............................................................................
- LET a|=ASC(MID$(ga$(gs|),gc%,1)) ! Notencharakteristik Abkürzen
- IF a|<>26 AND a|<>26+32 ! f nicht Pause
- LET a|=BCHG(a|,6) ! Untere_klaviatur_flag ändern
- MID$(ga$(gs|),gc%,1)=CHR$(a|) ! Änderung abspeichern
- @2_cursor_neu_setzen(gc%,0,gs|) !
- ENDIF !
- ' ----------------------------------------------------------------------------
- RETURN
- > PROCEDURE 4_taktstrich_setzen_loeschen
- ' ----------------------------------------------------------------------------
- LOCAL a| ! Abkürzung für Speicherinhalt
- ' ............................................................................
- LET a|=ASC(MID$(ga$(gs|),gc%,1)) ! Notencharakteristik Abkürzen
- LET a|=BCHG(a|,5) ! Taktstrichflag ändern
- MID$(ga$(gs|),gc%,1)=CHR$(a|) ! Änderung abspeichern
- @2_cursor_neu_setzen(gc%,0,gs|) !
- ' ----------------------------------------------------------------------------
- RETURN
- > PROCEDURE 4_basistonlaenge_veraendern
- ' ----------------------------------------------------------------------------
- LOCAL a$ ! Text
- ' ............................................................................
- PRINT AT(1,1);SPACE$(80); ! Menüzeile löschen
- ' ............................................................................
- LET a$="Gewählt: Neue Basistonlänge (Normal" !
- LET a$=a$+"=13,0=Abbruch): " !
- ' ............................................................................
- PRINT CHR$(27);CHR$(112); ! invers ein
- PRINT AT(1,1);a$; !
- PRINT CHR$(27);CHR$(113); ! invers aus
- PRINT AT(LEN(a$)+2,1);gbasistonlaenge| !
- PRINT AT(LEN(a$)+2,1); !
- ' ............................................................................
- INPUT gbasistonlaenge| !
- ' ----------------------------------------------------------------------------
- RETURN
- > PROCEDURE 4_bestimmte_stuecke_spielen
- ' ----------------------------------------------------------------------------
- LOCAL i| ! Stückzähler
- LOCAL a| ! Wahlvariable für Menü
- LOCAL m| ! Maustastenvar. für Menü
- LOCAL n% ! Tastencode
- LOCAL c$ ! Bildschirmnegativ
- LOCAL i$ ! Infostring
- DIM g!(gm|) ! Boolearray für Menü
- ' ............................................................................
- SGET c$ ! Bildschirm retten
- SPUT gfsb$ ! Fileselectbox ausgeben
- @2_workscreen_menue_zeigen !
- ' ............................................................................
- LET i$="Gewählt: bestimmte Stücke spielen. " !
- @a_info(i$+gname$) !
- @a_tastaturpuffer_leeren !
- ' ............................................................................
- @m(0,0,-1,0,-1,0,-1,4,4,8,20,m|,a|,gi$(),g!())! Menüprozedur aufrufen
- SPUT c$ ! Bildschirm wieder herstellen
- FOR i|=1 TO gts| ! Alle Stücke im Hauptfile durch
- IF g!(i|) ! f Stück ausgewählt:
- @5_einzelnes_stueck_spielen(i|) !
- ENDIF !
- KEYLOOK n% ! Taste anschauen
- EXIT IF n%=65563 ! Raus falls Escape-Taste
- NEXT i| ! nächstes Stück
- ' ............................................................................
- SPUT c$ ! Bildschirm wieder herstellen
- ERASE g!() ! Boolearray für Menü
- ' ----------------------------------------------------------------------------
- RETURN
- > PROCEDURE 5_einzelnes_stueck_spielen(nr|)
- ' ----------------------------------------------------------------------------
- LOCAL mga1$,mga2$ ! Akt. Stück retten
- LOCAL mgname$ ! Namen des akt. Stücks retten
- LOCAL t$ ! Text
- LOCAL mgs| ! akt. Stimmennummer retten
- LOCAL mgc% ! akt. Cursorposition retten
- ' ............................................................................
- LET mga1$=ga$(1) ! akt. Stück, 1. Stimme retten
- LET mga2$=ga$(2) ! akt. Stück, 2. Stimme retten
- LET mgname$=gname$ ! akt. Stück, Namen retten
- LET mgs|=gs| ! akt. Stimmennummer retten
- LET mgc%=gc% ! akt. Cursorposition retten
- ' ............................................................................
- LET ga$(1)=gs$(1,nr|) ! zu spielendes Stück übergeben
- LET ga$(2)=gs$(2,nr|) ! zu spielendes Stück übergeben
- LET gname$=gi$(nr|) ! Namen übergeben
- LET gs|=1 ! gehnwermalvonder1.Stimme aus
- ' ............................................................................
- @5_neues_stueck_zeigen !
- LET t$=gname$+" Nr.: "+STR$(nr|) ! Auch Stücknummer zeigen
- @2_notenabspielen(1,LEN(ga$(1)),8,t$) ! 8=zweistimmig
- ' ............................................................................
- LET ga$(1)=mga1$ ! akt. Stück, 1.St. wiederherst.
- LET ga$(2)=mga2$ ! akt. Stück, 2.St. wiederherst.
- LET gname$=mgname$ ! akt. Stück, Namen wiederherst.
- LET gs|=mgs| ! akt. Stimmennummer wiederher.
- LET gc%=mgc% ! akt. Cursorposition wiederher.
- ' ............................................................................
- @1_ton_aus !
- @6_stuecknummer_in_toenen_codieren(nr|) !
- ' ----------------------------------------------------------------------------
- RETURN
- > PROCEDURE 6_stuecknummer_in_toenen_codieren(nr|)
- ' ----------------------------------------------------------------------------
- LOCAL i| ! Ziffernzähler
- LOCAL nr$ ! Zifferstring
- LOCAL c$ ! Codierungsstring für 3 Noten
- ' ............................................................................
- IF NOT gnotencode! !
- GOTO raus_ton_codierung !
- ENDIF !
- ' ............................................................................
- LET gk1|=17 ! Sound Kanal 1 Metallic sound
- LET gk2|=17 ! Sound Kanal 2 Metallic sound
- @1_midi_sounds_setzen !
- PAUSE 10 ! Pause zum letzten Stück
- ' ............................................................................
- LET nr$=RIGHT$("00"+STR$(nr|),3) ! Stücknummer formatieren
- FOR i|=1 TO 3 ! Alle Ziffern durch
- LET c$=c$+CHR$(VAL(MID$(nr$,i|,1))+1) ! Duedita-Codierung vornehmen
- NEXT i| ! nächste Ziffer
- ' ............................................................................
- @3_einzelnote_spln(1,c$,CHR$(26),1,0) ! Ziffer in Note codieren
- PAUSE 20 ! Ton aushalten
- ' ............................................................................
- @3_einzelnote_spln(1,c$,CHR$(26),2,0) ! Ziffer in Note codieren
- PAUSE 20 ! Ton aushalten
- ' ............................................................................
- @3_einzelnote_spln(1,c$,CHR$(26),3,0) ! Ziffer in Note codieren
- PAUSE 20 ! Ton aushalten
- ' ............................................................................
- @1_ton_aus !
- raus_ton_codierung: !
- ' ----------------------------------------------------------------------------
- RETURN
- > PROCEDURE 4_best_st_direkt_hintereinander_sp
- ' ----------------------------------------------------------------------------
- LOCAL i| ! Stückzähler
- LOCAL a| ! Wahlvariable für Menü
- LOCAL m| ! Maustastenvar. für Menü
- LOCAL z| ! Zahl der zu spielenden Stücke
- LOCAL n% ! Tastencode
- LOCAL c$ ! Bildschirmnegativ
- LOCAL a1$ ! Speicher für großes Stück 1.St
- LOCAL a2$ ! Speicher für großes Stück 2.St
- LOCAL i$ ! Infostring
- DIM g!(gm|) ! Boolearray für Menü
- ' ............................................................................
- SGET c$ ! Bildschirm retten
- SPUT gfsb$ ! Fileselectbox ausgeben
- @2_workscreen_menue_zeigen !
- ' ............................................................................
- LET i$="Stücke direkt " !
- LET i$=i$+"hintereinander, ohne Pause und" !
- LET i$=i$+" sichtbare Noten spielen." !
- @a_info(i$+gname$) !
- ' ............................................................................
- @m(0,0,-1,0,-1,0,-1,4,4,8,20,m|,a|,gi$(),g!())! Menüprozedur aufrufen
- ' ............................................................................
- FOR i|=1 TO gts| ! Alle Stücke im Hauptfile durch
- EXIT IF gi$(i|)="________" ! leeres Stück gewählt
- IF g!(i|) ! f Stück ausgewählt:
- INC z| ! Zahl der zu spielenden Stücke
- LET a1$=a1$+gs$(1,i|) ! Großstück verlängern 1.Stimme
- LET a2$=a2$+gs$(2,i|) ! Großstück verlängern 2.Stimme
- ENDIF !
- NEXT i| ! nächstes Stück
- ' ............................................................................
- IF i|<=gm| ! f Abbruch möglich
- IF gi$(i|)="________" ! f leeres Stück gewählt:
- GOTO r_4_best_st_direkt_hintereinander_sp !
- ENDIF !
- ENDIF !
- ' ............................................................................
- LET i$="Anzahl der zu spielenden Stücke: " !
- LET i$=i$+STR$(z|) !
- @a_info(i$) !
- FOR i%=1 TO LEN(a1$) ! Alle Noten des Großstücks drch
- @3_einzelnote_spln(1,a1$,a2$,i%,8) !
- PAUSE gbasistonlaenge| ! Ton aushalten
- KEYLOOK n% ! Taste anschauen
- EXIT IF MOUSEK=1 OR n%=65563 ! f linke Maustaste oder Esc
- NEXT i% ! nächste Note Großstück
- ' ............................................................................
- r_4_best_st_direkt_hintereinander_sp: !
- ' ............................................................................
- SPUT c$ ! Bildschirm wieder herstellen
- ERASE g!() ! Boolearray für Menü
- ' ----------------------------------------------------------------------------
- RETURN
- > PROCEDURE 4_alle_stuecke_ab_nr_x_spielen
- ' ----------------------------------------------------------------------------
- LOCAL i| ! Stückzähler
- LOCAL n% ! Tastencode
- LOCAL c$ ! Bildschirmnegativ
- LOCAL a$ ! Text
- ' ............................................................................
- SGET c$ ! Bildschirm retten
- ' ............................................................................
- PRINT AT(1,1);SPACE$(80); ! Menüzeile löschen
- LET a$="Stücknr des 1. zu spielenden" !
- LET a$=a$+"Stücks eingeben (0=Abbruch):" !
- PRINT CHR$(27);CHR$(112); ! invers ein
- PRINT AT(1,1);a$; !
- PRINT CHR$(27);CHR$(113); ! invers aus
- PRINT AT(LEN(a$)+2,1); !
- INPUT s| ! Stücknummereingabe
- ' ............................................................................
- IF s|<>0 ! f was eingegeben:
- FOR i|=s| TO gts| ! Alle Stücke im Hauptfile durch
- @5_einzelnes_stueck_spielen(i|) !
- KEYLOOK n% ! Taste anschauen
- EXIT IF n%=65563 OR MOUSEK=2 ! Raus falls Escape-Taste v RMT
- NEXT i| ! nächstes Stück
- ENDIF !
- ' ............................................................................
- SPUT c$ ! Bildschirm wieder herstellen
- ' ----------------------------------------------------------------------------
- RETURN
- > PROCEDURE 4_inhaltsverzeichnis_korrigieren
- ' ----------------------------------------------------------------------------
- LOCAL a| ! Wahlvariable für Menü
- LOCAL m| ! Maustastenvar. für Menü
- LOCAL a$ ! Diverse Texte
- LOCAL bld$ ! Bildschirm retten
- ' ...........................................................................
- SGET bld$ ! Bildschirm retten
- SPUT gfsb$ ! Fileselectbox ausgeben
- ' ............................................................................
- DO !
- ' ..........................................................................
- LET a$="Gewählt: Stücknamen ändern" !
- @5_ein_stueck_aus_hauptfile(a$,a|,m|) !
- EXIT IF m|=2 ! f Abbruch gewählt: raus
- ' ..........................................................................
- PRINT AT(1,1);SPACE$(80); ! Menüzeile löschen
- LET a$="Stücknamen ändern " !
- LET a$=a$+"(ohne Kleinbuchst.,kein Punkt," !
- LET a$=a$+"0=raus):" !
- PRINT CHR$(27);CHR$(112); ! invers ein
- PRINT AT(1,1);a$; !
- PRINT CHR$(27);CHR$(113); ! invers aus
- PRINT AT(LEN(a$)+2,1); !
- LET a$=gi$(a|) ! Stückname übergeben
- FORM INPUT 8 AS a$ !
- EXIT IF a$="" OR a$="0" ! raus f Abbruch gewählt:
- ' ..........................................................................
- LET a$=UPPER$(a$) ! wandelt Kleinbuchst in Großb.
- FOR i|=1 TO LEN(a$) ! Namen durch
- IF MID$(a$,i|,1)="." ! Punkt nicht erlaubt
- MID$(a$,i|,1)="X" ! dito ersetzen
- ENDIF !
- NEXT i| !
- ' ..........................................................................
- LET gi$(a|)=a$ ! Stückname ins Inhaltsverz.
- @5_fileselectboxfoto(0) ! Hauptfileauswahlfoto
- ' ..........................................................................
- LOOP !
- ' ............................................................................
- SPUT bld$ ! Bildschirm wiederherstellen
- ' ----------------------------------------------------------------------------
- RETURN
- > PROCEDURE 4_inhaltsverzeichnis_alph_sortieren
- ' ----------------------------------------------------------------------------
- LOCAL i| ! Stückzähler
- ' ...........................................................................
- DIM s1$(gm|),s2$(gm|) ! Zwischenspeicher für Stückarr.
- DIM n|(gm|) ! Nummerierungsarray
- ' ...........................................................................
- FOR i|=1 TO gm| !
- LET s1$(i|)=gs$(1,i|) ! 1.Stimme des i|-ten St. zw.sp.
- LET s2$(i|)=gs$(2,i|) ! 2.Stimme des i|-ten St. zw.sp.
- LET n|(i|)=i| ! Nummerierungsarray füllen
- NEXT i| !
- ' ...........................................................................
- @5_sortieren(gm|,gi$(),n|()) ! alphabetisch sortieren
- ' ...........................................................................
- FOR i|=1 TO gm| !
- LET gs$(1,i|)=s1$(n|(i|)) ! 1.Stimme abspeichern
- LET gs$(2,i|)=s2$(n|(i|)) ! 2.Stimme abspeichern
- NEXT i| !
- ' ...........................................................................
- @5_fileselectboxfoto(-1) ! Hauptfileauswahlfoto
- ' ...........................................................................
- ERASE n|() ! Nummerierungsarray
- ERASE s1$(),s2$() ! Zwischenspeicher für Stückarr.
- ' ----------------------------------------------------------------------------
- RETURN
- > PROCEDURE 5_sortieren(max|,VAR i$(),n|())
- ' ----------------------------------------------------------------------------
- LOCAL nix! !
- LOCAL i| !
- LOCAL zw| !
- LOCAL zw$ !
- ' ...........................................................................
- @a_info("Jetzt wird sortiert") !
- ' ...........................................................................
- REPEAT !
- LET nix!=TRUE !
- FOR i|=max| DOWNTO 2 !
- IF i$(i|)<i$(i|-1) ! < heißt: alph weiter vorne
- LET zw$=i$(i|-1) !
- LET zw|=n|(i|-1) !
- LET i$(i|-1)=i$(i|) !
- LET n|(i|-1)=n|(i|) !
- LET i$(i|)=zw$ !
- LET n|(i|)=zw| !
- LET nix!=FALSE !
- ENDIF !
- NEXT i| !
- UNTIL nix! !
- ' ----------------------------------------------------------------------------
- RETURN
- > PROCEDURE 4_inhaltsverz_vom_hauptfile_drucken
- ' ----------------------------------------------------------------------------
- ' Hier wird das Inhaltsverzeichnis des Hauptfiles gedruckt, mit
- ' physikalischer Stücknummer und zwar zweispaltig in Superscript.
- ' ----------------------------------------------------------------------------
- LOCAL i| ! Zähler für einzelne Stücke
- LOCAL j| ! Zähler für einzelne Stücke
- LOCAL anz| ! Anzahl der nichtleeren Stücke
- LOCAL d% ! Druckervorschublänge
- LOCAL nr$ ! Nummerstring
- LOCAL schirm$ ! Bildschirmspeichervariable
- DIM i$(gm|) ! Array für die 160 Textzeilen
- ' ............................................................................
- LET d%=2370+235 ! Druckervorschubl. ganzes Blatt
- ' ............................................................................
- ' 1.) T e x t z e i l e n k o n s t r u i e r e n :
- ' ............................................................................
- FOR i|=1 TO gm| ! Alle Stücke durch, phys
- IF NOT gi$(i|)="________" ! F Stückname nicht leer:
- INC j| ! Stückzähler erhöhen
- LET nr$=RIGHT$("00"+STR$(j|),3) ! formatierte Nummer
- LET i$(j|)=nr$+" | "+gi$(i|) ! Zeile für i|-tes Stück
- ENDIF !
- NEXT i| ! nächstes Stück
- LET anz|=j| ! Anzahl nichtleerer St. merken
- ' ............................................................................
- IF ODD(anz|) ! f Anz. nichtleerer St ungerade
- LET i$(anz|+1)=" " ! Leerzchn als zus.String dranh.
- INC anz| ! Anzahl d.nichtl.Stcke erh
- ENDIF !
- FOR i|=1 TO anz|/2 ! Alle Stücke durch, alph
- LET i$(i|)=i$(i|)+" "+i$(i|+(anz|/2)) ! beide Spalten in eine Zeile
- NEXT i| ! nächstes Stück
- ' ............................................................................
- ' 2.) A u s d r u c k e n
- ' ............................................................................
- @a_alert("Wirklich drucken?/Ja|Nein",r|) ! d
- IF r|=2 ! F Abbruch gewählt:
- GOTO raus_inhverz ! raus
- ENDIF !
- ' ............................................................................
- SGET schirm$ ! Bildschirm retten
- PBOX 0,0,639,399 ! Bildschirm schwarz
- HIDEM ! Mauspfeil weg
- ' ............................................................................
- LET i$="I N H A L T S V E R Z E I C H N I S" !
- LET i$=i$+" "+ghptfle$ !
- LPRINT i$ !
- LPRINT !
- ' ............................................................................
- @5_druckerinitialisierung !
- LPRINT CHR$(27);CHR$(83);CHR$(0); ! selects superscripts
- ' LPRINT CHR$(27);CHR$(69); ! selects emphasized printing
- LPRINT CHR$(27);CHR$(51);CHR$(24); ! sets line spac. to n/216 inch
- LPRINT CHR$(27);CHR$(108);CHR$(10); ! stets the left margin
- ' ............................................................................
- FOR i|=1 TO anz|/2 ! Alle Stücke durch, alph
- LPRINT i$(i|) ! Doppelspaltenzeile dr,Infos
- ' ! für i|-tes & i|+80-tes Stück.
- LET d%=d%-24 !
- NEXT i| ! nächstes Stück
- @5_druckerinitialisierung !
- ' ............................................................................
- SPUT schirm$ ! Bildschirm wieder herstellen
- SHOWM ! Mauspfeil zeigen
- @6_druckervorschub_in_216tel_inch(d%) ! Restliche Länge als Vorschub
- ' ............................................................................
- raus_inhverz: ! Rauslabel
- ERASE i$() ! Array für die 160 Textzeilen
- ' ----------------------------------------------------------------------------
- RETURN
- > PROCEDURE 4_akt_stueck_mit_extra_kopfzeile_drucken
- ' ----------------------------------------------------------------------------
- LOCAL z| ! Maximalzeilennummer
- LOCAL m| ! Alertwahlvariable
- LOCAL a% ! Maximalnotennummer
- LOCAL a$ ! Diverse Texte
- LOCAL bld$ ! Bildschirmrettungsstring
- ' ............................................................................
- @a_alert("Drucken ?/Ja|Nein",m|) !
- IF m|=2 ! f Abbruch gewählt
- GOTO raus_drucken !
- ENDIF !
- ' ............................................................................
- PRINT AT(1,1);SPACE$(80); ! Menüzeile löschen
- LET a$="40-Zeichen-Zeile eingeben" !
- LET a$=a$+"(0=Abbruch):" !
- PRINT CHR$(27);CHR$(112); ! invers ein
- PRINT AT(1,1);a$; !
- PRINT CHR$(27);CHR$(113); ! invers aus
- PRINT AT(40,1); !
- LET a$="DUEDITA V.1.0 / "+gname$+" / " !
- FOR i|=1 TO 160 !
- EXIT IF gi$(i|)=gname$ !
- NEXT i| !
- LET a$=a$+STR$(i|) ! Stücknummer auch ausgeben
- FORM INPUT 40 AS a$ !
- ' ............................................................................
- IF a$<>"" AND a$<>"0" ! f was eingegeben:
- @a_info("bitte warten!") !
- @5_druckerinitialisierung !
- LPRINT SPACE$(30);a$; ! Infozeile ausdrucken
- SGET bld$ ! Bildschirm retten
- @5_drucken2(ga$(1),ga$(2)) ! tatsächlich drucken
- SPUT bld$ ! Bildschirm wiederherstellen
- @2_workscreen_menue_zeigen !
- ENDIF !
- ' ............................................................................
- raus_drucken: !
- @2_workscreen_menue_zeigen !
- ' ----------------------------------------------------------------------------
- ' |1: Es wurden bei z| bisher Doppelzeilen berechnet, der Array
- ' gzvs%() rechnet aber mit Einzelzeilen, deshalb hier 2*z| und
- ' +1 deshalb, weil ja die letzte Zeile nicht auch gelöscht werden
- ' soll, sondern nur das, was echt unterhalb dieser Zeile ist.
- ' ----------------------------------------------------------------------------
- RETURN
- > PROCEDURE 5_drucken2(s1$,s2$)
- ' ----------------------------------------------------------------------------
- LOCAL info! ! Hat Note unnormale Informat.?
- LOCAL s2! ! Zweite Druckseite nicht leer?
- LOCAL ds| ! Druckspaltenzähler
- LOCAL dz| ! Druckzeilenzähler
- LOCAL s| ! Stimmennr
- LOCAL d% ! Druckervorschublänge
- LOCAL i% ! Notennummer innerhalb x.Stimme
- LOCAL m% ! Maximalnotennummer
- DIM n%(8,48) ! Zeilen-Spalten-Array
- ' ............................................................................
- LET d%=2370+235 ! Druckervorschubl. ganzes Blatt
- ' ............................................................................
- IF LEN(ga$(1))>=LEN(ga$(2)) ! f obere Stimme >= untere St.
- LET m%=LEN(s1$) ! Maximallänge festlegen
- ELSE !
- LET m%=LEN(s2$) ! Maximallänge festlegen
- ENDIF !
- ' ............................................................................
- LET dz|=1 ! Mit 1 anfangen zu zählen
- FOR i%=1 TO m% ! Alle Noten
- @6_noten_info_test(i%,info!) ! Codiert die Note Information?
- IF NOT info! ! f keineInfonote(=Codierungsn.)
- IF ds|=48 ! f Druckzeile voll
- INC dz| ! erhöhe Druckzeilennummer
- LET ds|=1 ! Druckspaltenzähler=1
- ELSE !
- INC ds| ! erhöhe Druckspaltenzähler
- ENDIF !
- LET n%(dz|,ds|)=i% ! Notennummer in Array
- ENDIF !
- NEXT i% ! Nächste
- ' ............................................................................
- CLS ! Bildschirm löschen
- FOR dz|=1 TO 4 ! die ersten 4 Druckzeilen durch
- FOR ds|=1 TO 48 ! alle Druckspalten durch
- @6_d(s1$,1,dz|,ds|,n%(dz|,ds|),s2!) !
- NEXT ds| ! nächste Druckspalte
- NEXT dz| ! nächste Druckzeile
- FOR dz|=1 TO 4 ! die ersten 4 Druckzeilen durch
- FOR ds|=1 TO 48 ! alle Druckspalten durch
- @6_d(s2$,2,dz|,ds|,n%(dz|,ds|),s2!) !
- NEXT ds| ! nächste Druckspalte
- NEXT dz| ! nächste Druckzeile
- HARDCOPY !
- LET d%=d%-1200 ! Länge einer Hardcopy abziehen
- CLS ! Bildschirm löschen
- LET s2!=FALSE ! erst mal nix auf 2.Druckseite
- FOR dz|=5 TO 8 ! die zweiten 4Druckzeilen durch
- FOR ds|=1 TO 48 ! alle Druckspalten durch
- @6_d(s1$,1,dz|-4,ds|,n%(dz|,ds|),s2!)! |1:
- NEXT ds| ! nächste Druckspalte
- NEXT dz| ! nächste Druckzeile
- FOR dz|=5 TO 8 ! die zweiten 4Druckzeilen durch
- FOR ds|=1 TO 48 ! alle Druckspalten durch
- @6_d(s2$,2,dz|-4,ds|,n%(dz|,ds|),s2!) ! |1:
- NEXT ds| ! nächste Druckspalte
- NEXT dz| ! nächste Druckzeile
- GET 0,18,639,399,v$ ! Notenbild fotografieren
- CLS ! Bildschirm löschen
- PUT 0,0,v$ ! Notenbild nach oben verschiebn
- IF s2! ! f was auf 2.Druckseite
- HARDCOPY !
- LET d%=d%-1200 ! Länge einer Hardcopy abziehen
- ENDIF !
- @6_druckervorschub_in_216tel_inch(d%) ! Restliche Länge als Vorschub
- ' ............................................................................
- ERASE n%() ! Zeilen-Spalten-Array löschen
- ' ----------------------------------------------------------------------------
- ' |1: Die Position bleibt diesselbe wie beider ersten Druckseite,
- ' deshalb dz|-4, da sich die Position über dz| berechnet.
- ' ----------------------------------------------------------------------------
- RETURN
- > PROCEDURE 6_noten_info_test(nr%,VAR info!)
- ' ----------------------------------------------------------------------------
- LOCAL a$ ! Byte der Notencharakteristik
- LOCAL a| ! Abkürzung für Speicherinhalt
- LOCAL th| ! Tonhöhe
- LOCAL gebunden! ! Flag für Attribut: Gebunden
- LOCAL unt_kl! ! Flag für untere Klaviatur
- LOCAL taktstr! ! Flag für Taktstrich
- ' ............................................................................
- LET info!=FALSE ! erst mal vom guten ausgehen...
- ' ............................................................................
- ' B E I 1. S T I M M E T E S T E N :
- ' ............................................................................
- LET a|=ASC(MID$(ga$(1),nr%,1)) ! Notencharakteristik Abkürzen
- LET a$=BIN$(a|,8) ! Notenchar. als Byte darstellen
- LET gebunden!=(-1)*VAL(MID$(a$,1,1)) ! Gebundenflag
- LET unt_kl!=(-1)*VAL(MID$(a$,2,1)) ! Unt.Kl.flag
- LET taktstr!=(-1)*VAL(MID$(a$,3,1)) ! Taktstrichflag
- LET th|=VAL("%"+MID$(a$,4,5)) ! Tonhöhe
- ' ............................................................................
- IF gebunden! AND taktstr! ! f Codierungsnote:
- LET info!=TRUE ! Meldung erteilen
- ENDIF !
- ' ............................................................................
- ' B E I 2. S T I M M E T E S T E N :
- ' ............................................................................
- LET a|=ASC(MID$(ga$(2),nr%,1)) ! Notencharakteristik Abkürzen
- LET a$=BIN$(a|,8) ! Notenchar. als Byte darstellen
- LET gebunden!=(-1)*VAL(MID$(a$,1,1)) ! Gebundenflag
- LET unt_kl!=(-1)*VAL(MID$(a$,2,1)) ! Unt.Kl.flag
- LET taktstr!=(-1)*VAL(MID$(a$,3,1)) ! Taktstrichflag
- LET th|=VAL("%"+MID$(a$,4,5)) ! Tonhöhe
- ' ............................................................................
- IF gebunden! AND taktstr! ! f Codierungsnote:
- LET info!=TRUE ! Meldung erteilen
- ENDIF !
- ' ----------------------------------------------------------------------------
- ' PROCEDURE 4_automatisch_taktstrich_setzen
- ' ----------------------------------------------------------------------------
- RETURN
- > PROCEDURE 6_d(s$,s|,dz|,ds|,n%,VAR s!)
- ' ----------------------------------------------------------------------------
- LOCAL a| ! Abkürzung für Speicherinhalt
- LOCAL p% ! Grafikposition
- LOCAL l$ ! Leernotenfotostring
- ' ............................................................................
- IF n%=0 ! f nicht aufgenommene Note:
- GOTO raus_6_eine_seite ! hau ab
- ENDIF !
- LET s!=TRUE ! istetwas auf dieser Druckseite
- ' ............................................................................
- LET a|=ASC(MID$(s$,n%,1)) ! Notencharakteristik Abkürzen
- LET p%=(dz|-1)*80+25+ds| ! Positionsnummer berechnen
- IF s|=1 ! f 1.Stimme
- PUT gx%(s|,p%),gy%(s|,p%),gb$(s|,a|) ! Note zeichnen
- LET x%=gx%(s|,p%) !
- LET y%=gy%(s|,p%) !
- LINE x%,y%,x%+7,y% ! obere Begrenzungslinie
- ELSE ! f 2.Stimme
- PUT gx%(s|,p%),gy%(s|,p%)-3,gb$(s|,a|) ! Note etwas höher zeichnen
- ENDIF !
- ' ............................................................................
- LET l$=gb$(s|,0) ! Leernotenfotostring abkürzen
- IF s|=1 AND ds|=1 ! f 1.Stimme & am Druckzlnanf.
- TEXT gx%(s|,p%-5),gy%(s|,p%-6)+30,"1:" ! Stimmennummer angeben
- PUT gx%(s|,p%-1),gy%(s|,p%-1),l$ ! Leernote zeichnen
- PUT gx%(s|,p%-2),gy%(s|,p%-2),l$ ! Leernote zeichnen
- PUT gx%(s|,p%-3),gy%(s|,p%-3),l$ ! Leernote zeichnen
- PUT gx%(s|,p%-3),gy%(s|,p%-3),gns$,7 ! Notenschlüssel zeichnen
- ELSE IF ds|=1 ! f 2.Stimme & am Druckzlnanf.
- TEXT gx%(s|,p%-5),gy%(s|,p%-6)+30,"2:" ! Stimmennummer angeben
- PUT gx%(s|,p%-1),gy%(s|,p%-1)-3,l$ ! Leernote etwas höher zeichnen
- PUT gx%(s|,p%-2),gy%(s|,p%-2)-3,l$ ! Leernote etwas höher zeichnen
- PUT gx%(s|,p%-3),gy%(s|,p%-3)-3,l$ ! Leernote etwas höher zeichnen
- PUT gx%(s|,p%-3),gy%(s|,p%-3),gns$,7 ! Notenschlüssel höher zeichnen
- ENDIF !
- ' ............................................................................
- raus_6_eine_seite: !
- ' ----------------------------------------------------------------------------
- RETURN
- > PROCEDURE 6_druckervorschub_in_216tel_inch(d%)
- ' ----------------------------------------------------------------------------
- LOCAL t% ! Anzahl der 255-er in d%
- ' ............................................................................
- IF d%>=255 ! f ein Vielfaches existiert
- LET t%=TRUNC(d%/255) ! ganz.Vielf von 255 in d%
- LPRINT CHR$(27);CHR$(51);CHR$(255); ! Vorschubdef.: 255 x 1/216 inch
- FOR i%=1 TO t% ! Alle Vielfachen durch
- LPRINT CHR$(10);CHR$(13); ! Linefeed and Carriage Return
- NEXT i% !
- LPRINT CHR$(27);CHR$(51);CHR$(d%-t%*255); ! Vorschubdef. ... x 1/216 inch
- ELSE !
- LPRINT CHR$(27);CHR$(51);CHR$(d%); ! Vorschubdef. d% x 1/216 inch
- ENDIF !
- LPRINT CHR$(10);CHR$(13); ! Linefeed and Carriage Return
- ' ----------------------------------------------------------------------------
- RETURN
- > PROCEDURE 4_bestimmte_stuecke_drucken
- ' ----------------------------------------------------------------------------
- LOCAL i| ! Stückzähler
- LOCAL a| ! Wahlvariable für Menü
- LOCAL m| ! Maustastenvar. für Menü
- LOCAL x| ! Wahlvariable für Alertbox
- LOCAL n% ! Tastencode
- LOCAL c$ ! Bildschirmnegativ
- LOCAL i$ ! Infostring
- DIM g!(gm|) ! Boolearray für Menü
- ' ............................................................................
- SGET c$ ! Bildschirm retten
- SPUT gfsb$ ! Fileselectbox ausgeben
- @2_workscreen_menue_zeigen !
- ' ............................................................................
- LET i$="Bestimmte Stücke drucken. " !
- LET i$=i$+"Mit linker Maustaste " !
- LET i$=i$+"auswählen, mit rechter starten!" !
- @a_info(i$) !
- @a_tastaturpuffer_leeren !
- ' ............................................................................
- @m(0,0,-1,0,-1,0,-1,4,4,8,20,m|,a|,gi$(),g!())! Menüprozedur aufrufen
- FOR i|=1 TO gm| ! Alle Stücke im Hauptfile durch
- IF g!(i|) ! f Stück ausgewählt:
- PRINT CHR$(7); ! Klingeln
- LET i$=gi$(i|)+" Nr: "+STR$(i|) ! Infozeile
- a_alert(i$+" |drucken?/Ja!|Abbruch!",x|) !
- IF x|=1 !
- @5_druckerinitialisierung !
- LPRINT SPACE$(30);i$ ! Infozeile ausdrucken
- @5_drucken2(gs$(1,i|),gs$(2,i|)) ! tatsächlich drucken
- ELSE !
- EXIT IF TRUE !
- ENDIF !
- ENDIF !
- NEXT i| ! nächstes Stück
- ' ............................................................................
- ERASE g!() ! Boolearray für Menü
- SPUT c$ ! Bildschirm wieder herstellen
- ' ----------------------------------------------------------------------------
- RETURN
- > PROCEDURE 5_druckerinitialisierung
- ' ----------------------------------------------------------------------------
- LPRINT CHR$(27);CHR$(64); ! resets the printer
- ' ----------------------------------------------------------------------------
- RETURN
- ' ..............................................................................
- > PROCEDURE 4_block_anfang_ende_setzen ! B L O C K F K T
- ' ----------------------------------------------------------------------------
- LOCAL stuecklnge% !
- LOCAL mgba%,mgbe% !
- LOCAL mgc% !
- ' ............................................................................
- LET stuecklnge%=LEN(ga$(gs|)) !
- LET mgc%=gc% !
- 2_cursor_neu_setzen(stuecklnge%+1,0,gs|) ! Cursor hinter Stückende
- IF (gba%=0 OR mgc%<gba%) AND stuecklnge%>mgc% ! f ... und Block möglich
- IF gbe%<>0 ! f Blockende schon existiert:
- LET mgbe%=gbe% ! Blockende merken
- @4_blockmarkierung_loeschen !
- LET gbe%=mgbe% !
- ELSE !
- LET gbe%=stuecklnge% ! Blockende auf Stückende
- ENDIF !
- LET gba%=mgc% ! Blockanfang setzen
- @2_workscreen_menue_zeigen !
- ELSE IF gba%<>0 AND mgc%>gba% AND gbs|=gs| ! f Blockanfang & Curs.>Bl.anf.
- LET mgba%=gba% ! Merke Blockanfang
- @4_blockmarkierung_loeschen !
- LET gba%=mgba% ! Erinnere an Blockanfang
- IF mgc%>stuecklnge% ! f Cursor hinter Stückende:
- LET gbe%=stuecklnge% ! Blockende auf Stückende
- ELSE !
- LET gbe%=mgc% ! Blockende setzen
- ENDIF !
- ENDIF !
- IF gba%<>0 ! f Block geplant
- 2_cursor_neu_setzen(stuecklnge%+1,0,gs|) ! Cursor hinter Stückende
- LET gbs|=gs| ! Stimme während Block merken
- @5_blockmarkierung_setzen !
- ENDIF !
- ' ----------------------------------------------------------------------------
- RETURN
- > PROCEDURE 5_blockmarkierung_setzen
- ' ----------------------------------------------------------------------------
- LOCAL i% ! Notenzähler
- ' ............................................................................
- LET gbl$="" ! Alten Block löschen
- FOR i%=gba% TO gbe% ! Alle Blocknoten durch
- LET gbl$=gbl$+MID$(ga$(gs|),i%,1) ! neuen Block konstruiren
- @6_blockmarkierung_einer_note(i%) !
- NEXT i% ! nächste Blocknote
- ' ----------------------------------------------------------------------------
- ' PROCEDURE 2_block_kopieren
- ' ----------------------------------------------------------------------------
- RETURN
- > PROCEDURE 6_blockmarkierung_einer_note(n%)
- ' ----------------------------------------------------------------------------
- LOCAL x% ! x-Startkoordinate der Note
- LOCAL y% ! y-Startkoordinate der Note
- LOCAL b$ ! Fotonegativstring
- ' ............................................................................
- LET x%=gx%(gs|,n%) ! x-Startkoordinate der Note
- LET y%=gy%(gs|,n%) ! y-Startkoordinate der Note
- GET x%,y%+15,x%+7,y%+33,b$ ! mittleren Notenzeil fotogr.
- PUT x%,y%+15,b$,8 ! Notenteil invers wieder ausg.
- ' ----------------------------------------------------------------------------
- ' PROCEDURE 3_cursor_loeschen
- ' ----------------------------------------------------------------------------
- RETURN
- > PROCEDURE 4_blockmarkierung_loeschen
- ' ----------------------------------------------------------------------------
- IF gbe%<>0 ! f Block existiert:
- @6_noten_nur_zeigen(gbs|,gba%,gbe%) !
- ENDIF !
- CLR gba%,gbe%,gbs| ! Blockdaten löschen
- ' ----------------------------------------------------------------------------
- ' PROCEDURE 2_block_kopieren(p%)
- ' PROCEDURE 2_blocknoten_transponieren
- ' PROCEDURE 2_blocknotenlaengen_verdoppeln
- ' PROCEDURE 2_cursor_neu_setzen(p%,u%,as|)
- ' ----------------------------------------------------------------------------
- RETURN
- > PROCEDURE 4_block_kopieren
- ' ----------------------------------------------------------------------------
- LOCAL a$ ! Abkürzungsvariable
- LOCAL b$ ! Abkürzungsvariable
- ' ............................................................................
- IF LEN(ga$(gs|))+LEN(gbl$)>gm% OR gbl$="" ! f Stück zu lange würde
- GOTO raus_block_kopieren ! oder leerer Blockspeicher:raus
- ENDIF !
- ' ............................................................................
- LET a$=ga$(gs|) !
- LET b$=LEFT$(a$,gc%-1)+gbl$ !
- LET a$=b$+RIGHT$(a$,LEN(a$)-gc%+1) !
- LET ga$(gs|)=a$ !
- @6_noten_nur_zeigen(gs|,gc%,LEN(ga$(gs|))) !
- @4_blockmarkierung_loeschen !
- @2_cursor_neu_setzen(LEN(ga$(gs|))+1,0,gs|) !
- ' ............................................................................
- raus_block_kopieren: !
- ' ----------------------------------------------------------------------------
- ' |1: Hier muß man aufpassen, daß der Fall ausgeschlossen wird, daß
- ' Der Cursor sich in der einen, der Block aber in der anderen
- ' Stimme sich befinden, was geschieht mit: gs|=gbs|.
- ' ----------------------------------------------------------------------------
- RETURN
- > PROCEDURE 4_blocknotenlaengen_verdoppeln
- ' ----------------------------------------------------------------------------
- LOCAL a| ! Byte-zwischenspeicher
- LOCAL m| ! Alertwahlvariable
- LOCAL a$ ! Abkürzungsvariable
- LOCAL b$ ! Abkürzungsvariable für Kopie
- LOCAL c$ ! Abkürzungsvariable
- LOCAL i$ ! Infotext für Alertbox
- ' ............................................................................
- LET i$="Blocknotenlängen verdoppeln ?" !
- LET i$=i$+" / ja | nein" !
- @a_alert(i$,m|) !
- @2_workscreen_menue_zeigen !
- IF m|=2 ! f Abbruch gewählt
- GOTO raus_blocknotenlaengen_verdoppeln ! raus
- ENDIF !
- IF LEN(ga$(gs|))+LEN(gbl$)>gm% ! f Stück zu lange würde:
- @a_info("Stück würde zu lang!") !
- PAUSE 60 !
- GOTO raus_blocknotenlaengen_verdoppeln ! raus
- ENDIF !
- ' ............................................................................
- LET guname$=gname$ ! Undo-Sicherungskopie vom Namen
- LET gu$(1)=ga$(1) ! Undo-Sicherheits-Kopie
- LET gu$(2)=ga$(2) ! Undo-Sicherheits-Kopie
- ' ............................................................................
- LET c$=ga$(gs|) ! Notenspeicherstring abk.
- LET a$=LEFT$(c$,gba%-1) ! Zeugs links vom Block zw.sp.
- FOR i%=gba% TO gbe% ! Alle Blocknoten durch
- LET b$=MID$(gbl$,i%-gba%+1,1) ! Normale Note aus Block holen
- LET a$=a$+b$ ! Normale Note dazu
- LET a|=ASC(b$) ! Byte-code
- IF a|<>26 ! f kein Pausenzeichen:
- LET a|=BSET(a|,7) ! Geb.zchn dazu
- ENDIF !
- IF BTST(a|,5) ! f Taktstrich gesetzt:
- LET a|=BCLR(a|,5) ! Taktstrich in Kopie löschen
- ENDIF !
- LET a$=a$+CHR$(a|) ! Notenkopie hinzufügen
- NEXT i% ! nächste Blocknote
- LET a$=a$+RIGHT$(c$,LEN(c$)-gbe%) ! Zeugs rechts vom Block dazu
- LET ga$(gs|)=a$ ! fertigen String zurückgeben
- ' ............................................................................
- raus_blocknotenlaengen_verdoppeln: !
- @2_workscreen_menue_zeigen !
- @6_noten_nur_zeigen(gbs|,gba%,LEN(a$)) !
- @4_blockmarkierung_loeschen !
- @2_cursor_neu_setzen(LEN(ga$(gs|))+1,0,gs|) !
- ' ----------------------------------------------------------------------------
- RETURN
- > PROCEDURE 4_blocknoten_transponieren
- ' ----------------------------------------------------------------------------
- LOCAL min| ! Tonhöhenminimum
- LOCAL max| ! Tonhöhenmaximum
- LOCAL i% ! Notenzähler
- LOCAL diff% ! Verschiebewert in Halbtonschr.
- LOCAL i$ ! Infotext
- ' ............................................................................
- @5_blockmin_blockmax(min|,max|) ! min./max. Tonhöhe rausfinden
- IF min|=1 AND max|=49 ! f kein Spielraum für Transp.
- GOTO raus_block_transponieren !
- ENDIF !
- ' ............................................................................
- nochmal_transponier_eingabe: !
- PRINT AT(1,1);SPACE$(80); ! Menüzeile freimachen
- LET i$="Um wieviel Halbtöne soll alles " !
- LET i$=i$+"verschoben werden " !
- LET i$=i$+"(z.B.um-4 Halbt./0=raus)" !
- PRINT AT(1,1);i$; !
- INPUT diff% !
- IF diff%=0 !
- GOTO raus_block_transponieren !
- ELSE IF diff%+min|<1 ! f zu niedrig
- LET i$="Diff.:"+STR$(diff%)+" Zu niedrig !" !
- LET i$=i$+"Min|='"+STR$(min|)+"'" !
- a_info(i$) !
- PAUSE 60 !
- GOTO nochmal_transponier_eingabe !
- ELSE IF diff%+max|>49 ! f zu hoch
- LET i$="Diff.:"+STR$(diff%)+" Zu hoch !" !
- LET i$=i$+"Max|='"+STR$(max|)+"'" !
- a_info(i$) !
- PAUSE 60 !
- GOTO nochmal_transponier_eingabe !
- ENDIF !
- ' ............................................................................
- FOR i%=gba% TO gbe% ! Alle Blocknoten durch
- @5_einzelnote_transponieren(i%,diff%) !
- NEXT i% ! nächste Blocknote
- ' ............................................................................
- raus_block_transponieren: !
- @2_workscreen_menue_zeigen !
- @4_blockmarkierung_loeschen !
- ' ----------------------------------------------------------------------------
- RETURN
- > PROCEDURE 5_blockmin_blockmax(VAR minimum|,maximum|)
- ' ----------------------------------------------------------------------------
- LOCAL i% ! Notenzähler
- LOCAL a$ ! Byte der Notencharakteristik
- LOCAL a| ! Abkürzung für Speicherinhalt
- LOCAL th| ! Tonhöhe
- LOCAL unt_kl! ! Flag für untere Klaviatur
- ' ............................................................................
- LET minimum|=49 ! Minimum erst mal höchste Tonh.
- FOR i%=gba% TO gbe% ! Alle Blocknoten durch
- LET a|=ASC(MID$(ga$(gs|),i%,1)) ! Notencharakteristik Abkürzen
- LET a$=BIN$(a|,8) ! Notenchar. als Byte darstellen
- LET unt_kl!=(-1)*VAL(MID$(a$,2,1)) ! Unt.Kl.flag
- LET th|=VAL("%"+MID$(a$,4,5)) ! Tonhöhe
- IF th|=26 OR th|=26+32 ! f Pause:
- GOTO naechste_blocknote ! nicht als Note behandeln
- ENDIF !
- IF NOT unt_kl! ! f obere Klaviaturhälfte:
- LET th|=th|+24 ! untere dazuzählen
- ENDIF !
- IF th|>maximum| ! f neue oberste Tonhöhe:
- LET maximum|=th| ! neues Maximum
- ELSE IF th|<minimum| ! f neue unterste Tonhöhe:
- LET minimum|=th| ! neues Minimum
- ENDIF !
- naechste_blocknote: !
- NEXT i% ! nächste Blocknote
- ' ----------------------------------------------------------------------------
- RETURN
- > PROCEDURE 5_einzelnote_transponieren(i%,diff%)
- ' ----------------------------------------------------------------------------
- LOCAL a| ! Abkürzung für Speicherinhalt
- LOCAL h| ! Tonhöhe
- LOCAL g! ! Flag für Attribut: Gebunden
- LOCAL u! ! Flag für untere Klaviatur
- LOCAL t! ! Flag für Taktstrich
- ' ............................................................................
- @4_tonanalyse(i%,ga$(gs|),h|,t!,u!,g!) ! Ton analysieren
- IF h|=26 OR h|=26+1*32 ! f Pause:
- GOTO raus_einzelnote_transponieren ! Pause vom Tr. verschonen
- ENDIF !
- IF NOT u! ! f obere Klaviaturhälfte:
- LET h|=h|+24 ! untere dazuzählen
- ENDIF !
- LET h|=h|+diff% ! T r a n s p o n i e r e n
- IF h|<25 ! f untere Klaviaturhälfte:
- LET u!=TRUE ! entsprechendes Attribut setzen
- ELSE ! f obere Klaviaturhälfte
- LET u!=FALSE ! Attribut löschen
- LET h|=h|-24 ! Duedita-Kodierung errechnen
- ENDIF !
- ' ............................................................................
- raus_einzelnote_transponieren: !
- LET a|=h|+32*ABS(t!)+64*ABS(u!)+128*ABS(g!) ! Tonhöhe + Attribut Unt.Kl.!=u!
- MID$(ga$(gs|),i%,1)=CHR$(a|) ! Abkürzung an Speicherstrng üb.
- ' ----------------------------------------------------------------------------
- RETURN
- > PROCEDURE 4_automatisch_taktstrich_setzen
- ' ----------------------------------------------------------------------------
- LOCAL s| ! Taktlänge gbs|. Stimme
- LOCAL i$ ! Infotext
- ' ............................................................................
- PRINT AT(1,1);SPACE$(80); ! Menüzeile freimachen
- LET i$="Wieviel Basistöne soll der Takt in " !
- LET i$=i$+"der "+STR$(gbs|)+". Stimme " !
- LET i$=i$+"im Block enthalten " !
- PRINT AT(1,1);i$; !
- INPUT s| ! Taktlänge gbs|. Stimme
- ' ............................................................................
- @5_takt_setzen_in_stimme(gbs|,s|) !
- ' ............................................................................
- @2_workscreen_menue_zeigen !
- @4_blockmarkierung_loeschen !
- ' ----------------------------------------------------------------------------
- RETURN
- > PROCEDURE 5_takt_setzen_in_stimme(s|,tl|)
- ' ----------------------------------------------------------------------------
- LOCAL info! ! Hat Note unnormale Informat.?
- LOCAL tnz| ! Taktnotenzähler
- LOCAL a| ! Abkürzung für Speicherinhalt
- LOCAL nr% ! Notenzähler
- LOCAL i% ! Notenplatzzähler
- ' ............................................................................
- FOR i%=gba% TO gbe% ! s.Stimme durch im Blockbereich
- @6_noten_info_test(i%,info!) ! Codiert die Note Information?
- IF NOT info! ! f keine Infonote:
- INC nr% ! Notennummer erhöhen
- INC tnz| ! Taktnotenzähler erhöhen
- IF nr%=1 ! f Stückanfang:
- LET tnz|=tl| ! mit Taktstrich anfangen
- ENDIF !
- LET a|=ASC(MID$(ga$(s|),i%,1)) ! Notencharakteristik Abkürzen
- IF tnz|=tl| ! f Takt voll
- LET a|=BSET(a|,5) ! Taktstrichflag setzen
- LET a|=BCLR(a|,7) ! Gebundenzeichenflag löschen |1
- LET tnz|=0 ! Taktnotenzähler null setzen
- ELSE ! f Takt nicht voll
- LET a|=BCLR(a|,5) ! Taktstrichflag löschen
- ENDIF !
- MID$(ga$(s|),i%,1)=CHR$(a|) ! Änderung abspeichern
- ENDIF !
- NEXT i% ! nächste Note 1.Stimme
- ' ----------------------------------------------------------------------------
- ' |1: Bei Taktstrich gesetzt und Gebundenzeichen gesetzt entstände
- ' ja eine nichtspielbare Infonote.
- ' ----------------------------------------------------------------------------
- RETURN
- > PROCEDURE 4_suchen_und_ersetzen_im_block
- ' ----------------------------------------------------------------------------
- LOCAL a| ! Wahlvariable
- LOCAL i$ ! jede Menge Text im String
- ' ............................................................................
- LET i$="Gewählt: Suchen und Ersetzen im " !
- LET i$=i$+"Blockbereich." !
- @a_info(i$) !
- ' ............................................................................
- LET i$="Jetzt bitte auswählen: /" !
- LET i$=i$+"Gebundene Noten ersetzen durch :" !
- LET i$=i$+" Pausen.|" !
- LET i$=i$+"Ungebundene Noten ersetzen durch:" !
- LET i$=i$+" gebundene Noten.|" !
- LET i$=i$+"Best. Notenhöhen ersetzen durch :" !
- LET i$=i$+" andere Notenhöhen.|" !
- LET i$=i$+" Abbruch." !
- @a_alert(i$,a|) !
- ' ............................................................................
- IF a|=1 !
- @5_gebundene_noten_ersetzen_durch_pausen !
- ELSE IF a|=2 !
- @5_ungebundene_noten_ersetzen_durch_gebunde !
- ELSE IF a|=3 !
- @5_notenhoehne_ersetzen_durch_andere !
- ENDIF !
- ' ----------------------------------------------------------------------------
- RETURN
- > PROCEDURE 5_gebundene_noten_ersetzen_durch_pausen
- ' ----------------------------------------------------------------------------
- LOCAL g! ! Flag für Attribut: Gebunden
- LOCAL u! ! Flag für untere Klaviatur
- LOCAL t! ! Flag für Taktstrich
- LOCAL h| ! Tonhöhe
- LOCAL a| ! Abkürzung für Speicherinhalt
- LOCAL i% ! Blocknotenzähler
- ' ............................................................................
- FOR i%=gba% TO gbe% ! Alle Blocknoten durch
- @4_tonanalyse(i%,ga$(gs|),h|,t!,u!,g!) ! Ton analysieren
- IF g! AND NOT t! ! f gebunden und keine Infonote
- MID$(ga$(gbs|),i%,1)=CHR$(26) ! Pause draus machen
- ENDIF !
- NEXT i% ! nächste Blocknote
- ' ............................................................................
- @2_workscreen_menue_zeigen !
- @4_blockmarkierung_loeschen !
- ' ----------------------------------------------------------------------------
- RETURN
- > PROCEDURE 5_ungebundene_noten_ersetzen_durch_gebunde
- ' ----------------------------------------------------------------------------
- LOCAL g! ! Flag für Attribut: Gebunden
- LOCAL u! ! Flag für untere Klaviatur
- LOCAL t! ! Flag für Taktstrich
- LOCAL h| ! Tonhöhe
- LOCAL a| ! Abkürzung für Speicherinhalt
- LOCAL i% ! Blocknotenzähler
- ' ............................................................................
- FOR i%=gba% TO gbe% ! Alle Blocknoten durch
- @4_tonanalyse(i%,ga$(gs|),h|,t!,u!,g!) ! Ton analysieren
- IF (NOT g!) AND h|<>26 AND h|<>26+32 ! f ungebunden und keine Pause
- IF NOT t! ! f kein Taktstrich:
- a|=h|+32*ABS(t!)+64*ABS(u!)+128*ABS(-1) ! gebunden machen
- MID$(ga$(gs|),i%,1)=CHR$(a|) ! Abkürzung an Speicherstrng üb.
- ENDIF !
- ENDIF !
- NEXT i% ! nächste Blocknote
- ' ............................................................................
- @2_workscreen_menue_zeigen !
- @4_blockmarkierung_loeschen !
- ' ----------------------------------------------------------------------------
- RETURN
- > PROCEDURE 5_notenhoehne_ersetzen_durch_andere
- ' ----------------------------------------------------------------------------
- LOCAL su! ! Untere-Kl.flag Suchnote
- LOCAL eu! ! Untere-Kl.flag Ersetznote
- LOCAL a! ! Abbruchflag
- LOCAL s| ! Suchnotentonhöhe
- LOCAL e| ! Ersetznotentonhöhe
- LOCAL i% ! Notenzähler
- LOCAL s$ !
- LOCAL e$ !
- LOCAL i$ ! Infotext
- ' ............................................................................
- @5_blockmin_blockmax(min|,max|) ! min./max. Tonhöhe rausfinden
- IF min|=1 AND max|=49 ! f kein Spielraum für Transp.
- GOTO raus_block_transponieren !
- ENDIF !
- ' ............................................................................
- PRINT AT(1,1);SPACE$(80); ! Menüzeile freimachen
- LET i$="Was soll ersetzt " !
- LET i$=i$+"werden (P=Pause," !
- LET i$=i$+"C-c,c-c',c'-c'',c''-c'''/0=raus)" !
- PRINT AT(1,1);i$; !
- INPUT s$ !
- @6_in_dueditacode_uebers(s$,s|,su!,a!) !
- IF a! ! f Abbruch gewählt:
- @a_info("Abbruch !") !
- PAUSE 40 !
- GOTO 5_notenhoehne_ersetzen_durch_andere !
- ENDIF !
- @a_tastaturpuffer_leeren !
- PRINT AT(1,1);SPACE$(80); ! Menüzeile freimachen
- LET i$="Mit was soll "+s$+" ersetzt " !
- LET i$=i$+"wrdn (P=Pse," !
- LET i$=i$+"C-c,c-c',c'-c'',c''-c'''/0=raus)" !
- PRINT AT(1,1);i$; !
- INPUT e$ !
- @6_in_dueditacode_uebers(e$,e|,eu!,a!) !
- IF a! ! f Abbruch gewählt:
- @a_info("Abbruch !") !
- PAUSE 40 !
- GOTO 5_notenhoehne_ersetzen_durch_andere !
- ENDIF !
- ' ............................................................................
- FOR i%=gba% TO gbe% ! Alle Blocknoten durch
- @6_einzelton_ersetzen(i%,s|,e|,su!,eu!) !
- NEXT i% ! nächste Blocknote
- ' ............................................................................
- @2_workscreen_menue_zeigen !
- @4_blockmarkierung_loeschen !
- 5_notenhoehne_ersetzen_durch_andere: !
- ' ----------------------------------------------------------------------------
- RETURN
- > PROCEDURE 6_einzelton_ersetzen(i%,s|,e|,su!,eu!)
- ' ----------------------------------------------------------------------------
- LOCAL g! ! Flag für Attribut: Gebunden
- LOCAL u! ! Flag für untere Klaviatur
- LOCAL t! ! Flag für Taktstrich
- LOCAL h| ! Tonhöhe
- ' ............................................................................
- @4_tonanalyse(i%,ga$(gbs|),h|,t!,u!,g!) ! Ton analysieren
- ' ............................................................................
- IF h|=s| AND u!=su! ! Falls gesuchtes gefunden:
- a|=e|+32*ABS(t!)+64*ABS(eu!)+128*ABS(g!) ! ersetzen mit neuer Tonhöhe
- MID$(ga$(gbs|),i%,1)=CHR$(a|) ! Abkürzung an Speicherstrng üb.
- IF e|=26 ! f Ersetzhöhe=Pause:
- IF t! ! f Taktstrich:
- MID$(ga$(gbs|),i%,1)=CHR$(26+32) ! Abkürzung an Speicherstrng üb.
- ELSE ! f kein Taktstrich
- MID$(ga$(gbs|),i%,1)=CHR$(26) ! Abkürzung an Speicherstrng üb.
- ENDIF !
- ENDIF !
- ENDIF !
- ' ----------------------------------------------------------------------------
- RETURN
- > PROCEDURE 6_in_dueditacode_uebers(a$,VAR a|,u!,a!)
- ' ----------------------------------------------------------------------------
- LOCAL mi| ! Midi-ähnlicher Tonhöhencode
- LOCAL r$ ! Lesestring
- ' ............................................................................
- RESTORE notennamen ! Readzeiger setzen
- ' ............................................................................
- DO !
- INC mi| !
- READ r$ !
- EXIT IF a$=r$ !
- EXIT IF r$="##" !
- LOOP !
- IF r$="##" ! f nix gefunden:
- LET a!=TRUE ! Abbruchflag setzen
- ENDIF !
- ' ............................................................................
- IF mi|<25 ! erste untere beiden Oktaven:
- LET u!=TRUE ! Unt-Klaviaturflag setzen
- LET a|=mi| ! Codierung gleich
- ELSE ! oberen beiden Oktaven:
- LET a|=mi|-24 ! Duedita-Code der Tonhöhen
- ENDIF !
- ' ----------------------------------------------------------------------------
- RETURN
- > PROCEDURE 4_block_loeschen
- ' ----------------------------------------------------------------------------
- LOCAL m| ! Alertwahlvariable
- LOCAL dummy% !
- LOCAL ende% !
- LOCAL a$ ! Abkürzungsvariable
- LOCAL b$ ! Abkürzungsvariable
- ' ............................................................................
- @a_alert("Block löschen ? /ja|nein",m|) !
- @2_workscreen_menue_zeigen !
- IF m|=2 ! f Abbruch gewählt
- GOTO raus_block_loeschen !
- ENDIF !
- ' ............................................................................
- LET guname$=gname$ ! Undo-Sicherungskopie vom Namen
- LET gu$(1)=ga$(1) ! Undo-Sicherheits-Kopie
- LET gu$(2)=ga$(2) ! Undo-Sicherheits-Kopie
- ' ............................................................................
- LET a$=ga$(gs|) !
- LET b$=LEFT$(a$,gba%-1) !
- LET a$=b$+RIGHT$(a$,LEN(a$)-gbe%) !
- LET ga$(gs|)=a$ !
- LET ende%=LEN(a$)+gbe%-gba%+1 !
- @6_noten_nur_zeigen(gbs|,gba%,ende%) !
- CLR gba%,gbe%,gbs| ! Blockanfang/ende löschen
- @2_cursor_neu_setzen(LEN(ga$(gs|))+1,0,gs|) !
- ' ............................................................................
- raus_block_loeschen: !
- ' ----------------------------------------------------------------------------
- RETURN
- ' ..............................................................................
- > PROCEDURE 2_helptext ! H I L F / E N D
- ' ----------------------------------------------------------------------------
- LOCAL bld$ ! Bildschirmrettstring
- LOCAL a$ ! Lesestring
- ' ............................................................................
- SGET bld$ ! Bildschirm retten
- @a_tastaturpuffer_leeren !
- CLS ! Bildschirm löschen
- HIDEM ! Maus weg
- PRINT ! CR
- ' ............................................................................
- RESTORE hilfstext ! Lesezeiger initialisieren
- READ a$ ! Zeile einlesen
- WHILE a$<>"##" ! f noch nicht Textende erreicht
- PRINT " ";a$;STRING$(75-LEN(a$),"."); ! Zeile ausgeben
- READ a$ ! Zeile einlesen
- IF a$<>"##" ! f nicht letzte Zeile
- PRINT ! Zeilenvorschub
- ENDIF !
- WEND !
- REPEAT ! Auf Tastendruck warten
- PRINT AT(55,3);DATE$;" ";TIME$ !
- UNTIL INKEY$<>"" OR MOUSEK !
- @a_tastaturpuffer_leeren !
- ' ............................................................................
- SPUT bld$ ! Bildschirm wiederherstellen
- SHOWM ! Maus her
- ' ----------------------------------------------------------------------------
- RETURN
- > PROCEDURE 4_programmende(w|)
- ' ----------------------------------------------------------------------------
- LOCAL a| ! Menüwahlvariable
- LOCAL i$ !
- ' w| ! Wahlvariable
- ' ............................................................................
- @1_ton_aus !
- ' ............................................................................
- IF w|=5 ! Edit(Bei PD-Version Stop!)
- EDIT !
- ELSE IF w|=2 ! w|=2, Quit gewählt:
- LET i$="Wollen Sie etwa Duedita verlassen?" !
- LET i$=i$+"|Haben Sie auch schon alle" !
- LET i$=i$+" Änderungen|doppelt und dreifa" !
- LET i$=i$+"ch abgespeichert?|/Ja doch!" !
- LET i$=i$+"|Äh...nein!" !
- @a_alert(i$,a|) !
- IF a|=1 ! F 'ja' gewählt:
- QUIT !
- ENDIF !
- ENDIF !
- ' ----------------------------------------------------------------------------
- RETURN
- ' ------------------------------------------------------------------------------
- > PROCEDURE 1_simuliere_midi(t|,x%,u%,VAR hptm!,n%,m$)
- ' ----------------------------------------------------------------------------
- ' t| ! Maustaste
- ' x% ! Maus-x-Koordinate
- ' m$ ! Midi-String (zurück)
- ' hptm! ! Hauptmenüschalter
- ' n% ! Tastencode (zurück)
- ' m$ ! Midi-String (zurück)
- LOCAL h| ! Tonhöhe (35-58,59-85)
- ' ............................................................................
- IF x%<20 ! Pausentaste ?
- IF t|=1 AND u%=8 ! f rechte Maustaste + Alt.:
- LET h|=26 ! Pausencode
- LET n%=3735584 ! simuliere: Space gedrückt:
- ELSE IF t|=2 ! f linke Maustaste:
- LET hptm!=TRUE ! Hauptmenü einschalten
- ENDIF !
- ELSE ! Notentaste:
- LET h|=TRUNC((x%-20)/25)+1 ! Notentaste feststellen
- ENDIF !
- ' ............................................................................
- LET h|=h|+59 ! erst mal von oberen 2 Okt ausg
- IF t|=2 ! f rechte Maustaste
- LET h|=h|-24 ! untere beiden Oktaven agespr.
- ENDIF !
- LET m$=CHR$(h|) ! Midi-Eingabe simulieren
- ' ............................................................................
- IF h|<>26+59 AND NOT hptm! ! f keine Pause & nicht Hauptm.
- @4_neuer_ton_ein_auf_kanal_1(h|) ! Ton ein Kanal 1
- ENDIF !
- ' ............................................................................
- @a_mauspuffer_leeren !
- ' ----------------------------------------------------------------------------
- RETURN
- ' ------------------------------------------------------------------------------
- > PROCEDURE 1_tastaturanalyse(n%)
- ' ----------------------------------------------------------------------------
- LOCAL n$ ! Gesamttastaturcodestring
- LOCAL a% ! Ascii-Code
- LOCAL s% ! Scan-Code
- LOCAL u% ! Tastaturumschaltcode
- ' ............................................................................
- LET n$=STRING$(32-LEN(BIN$(n%)),"0")+BIN$(n%) ! |1
- LET a%=VAL("%"+RIGHT$(n$,8)) ! Ascii-Code
- LET s%=VAL("%"+MID$(n$,9,8)) ! Scan-Code
- LET u%=VAL("%"+LEFT$(n$,8)) ! Tastaturumschaltcode
- ' ............................................................................
- IF s%=98 ! Help
- @2_helptext !
- ELSE IF s%=15 AND u%=0 ! Tab ohne Control
- @2_tab_ohne_control !
- ELSE IF s%=15 AND u%=4 ! Tab mit Control
- @2_tab_mit_control !
- ELSE IF s%=75 ! Pfeil nach links
- @2_pfeil_nach_links !
- ELSE IF s%=77 ! Pfeil nach rechts
- @2_pfeil_nach_rechts !
- ELSE IF s%=72 AND u%=0 ! Pfeil nach oben ohne Shift
- @2_pfeil_nach_oben_ohne_shift !
- ELSE IF s%=72 AND (u%=2 OR u%=1) ! Pfeil nach oben mit Shift
- @2_pfeil_nach_oben_mit_shift !
- ELSE IF s%=80 AND u%=0 ! Pfeil nach unten ohne Shift
- @2_pfeil_nach_unten_ohne_shift !
- ELSE IF s%=80 AND (u%=2 OR u%=1) ! Pfeil nach unten mit Shift
- @2_pfeil_nach_unten_mit_shift !
- ELSE IF s%=71 AND u%=0 ! Clr/Home
- @2_clr_home_ohne_shift !
- ELSE IF s%=71 AND (u%=2 OR u%=1) ! Clr/Home mit Shift-Taste
- @2_clr_home_mit_shift !
- ELSE IF s%=14 ! 'Backspace'
- @2_backspace !
- ELSE IF s%=82 ! 'Insert'
- @2_insert !
- ELSE IF s%=97 ! 'Undo'
- @2_undo !
- ELSE IF s%=31 AND u%=8 ! 's' + 'Alternate'
- @s ! Bildschirm schwarz und warten
- ENDIF !
- ' ............................................................................
- @a_tastaturpuffer_leeren !
- ' ----------------------------------------------------------------------------
- ' |1: Größe von n$: 76543210765432107654321076543210
- ' [ ] <- Tastaturumschaltcode 256^3
- ' [ ] <- Scan-Code !
- ' [ ] <- unbenutzt
- ' [ ] <- Ascii-Code
- ' 7=.......... !
- ' 6=......... !
- ' 5=........ !
- ' 4=.......Capslock !
- ' 3=......Alternate !
- ' 2=.....Control !
- ' 1=....Linksshift !
- ' 0=...Rechtsshift !
- ' !
- ' Zähler für mid$: 12345678901234567890123456789012, insg.: 32
- ' 1 2 3 !
- ' Zähler für Pot.: 10987654321098765432109876543210
- ' 3 2 1
- ' ----------------------------------------------------------------------------
- ' Testschleife zur Ermittlung des Tastencodes:
- ' DO !
- ' KEYGET n% !
- ' PRINT BIN$(n%) !
- ' LET n$=STRING$(32-LEN(BIN$(n%)),"0")+BIN$(n%) !
- ' LET a%=VAL("%"+RIGHT$(n$,8)) ! Ascii-Code
- ' LET s%=VAL("%"+MID$(n$,9,8)) ! Scan-Code
- ' LET u%=VAL("%"+LEFT$(n$,8)) ! Tastaturumschaltcode
- ' PRINT AT(1,1);n$;" u='";u%;"' s='";s%;"' a='";a%;"' '";CHR$(a%);"'"
- ' LOOP !
- ' Bemerkung: Mit dem Befehl 'KEYPRESS' kann man die CapsLock-Taste leider
- ' nicht schalten und mit r%=bios(11,2^4) [vgl.GFA-Handb.12-17]
- ' ebenfalls nicht.
- ' ----------------------------------------------------------------------------
- RETURN
- > PROCEDURE 2_tab_ohne_control
- ' ----------------------------------------------------------------------------
- LOCAL th| ! Tonhöhe
- LOCAL g! ! Flag für Attribut: Gebunden
- LOCAL u! ! Flag für untere Klaviatur
- LOCAL t! ! Flag für Taktstrich
- LOCAL i% ! Zukünftiger Cursorplatz
- ' ............................................................................
- LET i%=gc% ! erst mal gleich
- ' ............................................................................
- @4_tonanalyse(i%,ga$(gs|),th|,t!,u!,g!) ! Ton analysieren
- INC i% !
- @4_tonanalyse(i%,ga$(gs|),th|,t!,u!,g!) ! Ton analysieren
- WHILE (NOT t!) AND i%<LEN(ga$(gs|)) ! f kein Taktstr. & nicht Ende
- INC i% !
- @4_tonanalyse(i%,ga$(gs|),th|,t!,u!,g!) ! Ton analysieren
- WEND !
- ' ............................................................................
- @2_cursor_neu_setzen(i%,0,gs|) !
- PAUSE 1 ! Ton aushalten
- ' ----------------------------------------------------------------------------
- RETURN
- > PROCEDURE 2_tab_mit_control
- ' ----------------------------------------------------------------------------
- LOCAL th| ! Tonhöhe
- LOCAL g! ! Flag für Attribut: Gebunden
- LOCAL u! ! Flag für untere Klaviatur
- LOCAL t! ! Flag für Taktstrich
- LOCAL i% ! Zukünftiger Cursorplatz
- ' ............................................................................
- IF gc%=1 ! f schon am Anfang
- GOTO raus_2_tab_mit_control ! raus
- ENDIF !
- ' ............................................................................
- LET i%=gc% ! erst mal gleich
- ' ............................................................................
- @4_tonanalyse(i%,ga$(gs|),th|,t!,u!,g!) ! Ton analysieren
- DEC i% !
- @4_tonanalyse(i%,ga$(gs|),th|,t!,u!,g!) ! Ton analysieren
- WHILE (NOT t!) AND i%>1 ! f kein Taktstr. & nicht Anfang
- DEC i% !
- @4_tonanalyse(i%,ga$(gs|),th|,t!,u!,g!) ! Ton analysieren
- WEND !
- ' ............................................................................
- @2_cursor_neu_setzen(i%,0,gs|) !
- ' ............................................................................
- raus_2_tab_mit_control: !
- PAUSE 1 ! Ton aushalten
- ' ----------------------------------------------------------------------------
- RETURN
- > PROCEDURE 2_pfeil_nach_links
- ' ----------------------------------------------------------------------------
- IF gc%>1 !
- @2_cursor_neu_setzen(gc%-1,0,gs|) !
- ENDIF !
- PAUSE 1 ! Ton aushalten
- ' ----------------------------------------------------------------------------
- RETURN
- > PROCEDURE 2_pfeil_nach_rechts
- ' ----------------------------------------------------------------------------
- IF gc%<320 !
- @2_cursor_neu_setzen(gc%+1,0,gs|) !
- ENDIF !
- PAUSE 1 ! Ton aushalten
- ' ----------------------------------------------------------------------------
- RETURN
- > PROCEDURE 2_pfeil_nach_oben_ohne_shift
- ' ----------------------------------------------------------------------------
- IF gs|=2 ! f in 2.Stimme:
- @2_cursor_neu_setzen(gc%,0,1) ! in 1. Stimme wechseln=Einzzle
- ELSE IF gc%>80 ! f in 1.St.&n. in 1.Doppelzeile
- @2_cursor_neu_setzen(gc%-80,0,2) ! in 1. Stimme wechseln, also
- ENDIF ! eine Einzelzeile rauf
- PAUSE 1 ! Ton aushalten
- ' ----------------------------------------------------------------------------
- RETURN
- > PROCEDURE 2_pfeil_nach_oben_mit_shift
- ' ----------------------------------------------------------------------------
- IF gc%>80 ! f nicht in 1. Doppelzeile
- @2_cursor_neu_setzen(gc%-80,0,gs|) ! eine Doppelzeile rauf
- ENDIF !
- PAUSE 1 ! Ton aushalten
- ' ----------------------------------------------------------------------------
- RETURN
- > PROCEDURE 2_pfeil_nach_unten_ohne_shift
- ' ----------------------------------------------------------------------------
- IF gs|=1 ! f 1. Stimme:
- @2_cursor_neu_setzen(gc%,0,2) ! in 2. Stimme wechseln=Einzzle
- ELSE IF gc%<241 AND LEN(ga$(1))>=gc%+80 ! f in 2.Stimme, n.in letzt.Dzle
- @2_cursor_neu_setzen(gc%+80,0,1) ! in 1. Stimme wechseln, also
- ENDIF ! eine Einzelzeile runter
- PAUSE 1 ! Ton aushalten
- ' ----------------------------------------------------------------------------
- RETURN
- > PROCEDURE 2_pfeil_nach_unten_mit_shift
- ' ----------------------------------------------------------------------------
- IF gc%<241 ! f nicht in letzter Doppelzle:
- @2_cursor_neu_setzen(gc%+80,0,gs|) ! eine Doppelzeile runter
- ENDIF !
- PAUSE 1 ! Ton aushalten
- ' ----------------------------------------------------------------------------
- RETURN
- > PROCEDURE 2_clr_home_ohne_shift
- ' ----------------------------------------------------------------------------
- @2_cursor_neu_setzen(1,0,gs|) !
- PAUSE 1 ! Ton aushalten
- ' ----------------------------------------------------------------------------
- RETURN
- > PROCEDURE 2_clr_home_mit_shift
- ' ----------------------------------------------------------------------------
- @2_cursor_neu_setzen(LEN(ga$(gs|))+1,0,gs|) !
- PAUSE 1 ! Ton aushalten
- ' ----------------------------------------------------------------------------
- RETURN
- > PROCEDURE 2_backspace
- ' ----------------------------------------------------------------------------
- LOCAL a$ ! Abkürzungsstring
- ' ............................................................................
- IF gc%=1 ! f erste Note aktuell:
- GOTO raus_backspace ! verschwinde
- ENDIF !
- ' ............................................................................
- LET a$=ga$(gs|) ! Notenspeicherstring abkürzen
- a$=LEFT$(a$,gc%-2)+RIGHT$(a$,LEN(a$)-gc%+1) ! Backspace vollziehen
- LET ga$(gs|)=a$ ! neuen Speicherstring zurückgeb
- @6_noten_nur_zeigen(gs|,gc%+1,LEN(a$)+1) ! Notentextbild aktualisieren |1
- @2_cursor_neu_setzen(gc%-1,0,gs|) !
- raus_backspace: !
- ' ----------------------------------------------------------------------------
- ' |1: Ich kann mit gc%+1 beginnen, weil die Noten bei gc% und bei
- ' gc%-1 mit der Prozedur 2_cursor_neu_setzen gezeigt werden.
- ' ----------------------------------------------------------------------------
- RETURN
- > PROCEDURE 2_insert
- ' ----------------------------------------------------------------------------
- LOCAL a$ ! Abkürzungsstring
- LOCAL b$ ! Abkürzungsstring
- ' ............................................................................
- LET a$=ga$(gs|) ! Notenspeicherstring abkürzen
- IF LEN(a$)=gm% ! f kein Platz mehr:
- GOTO raus_insert ! verschwinde
- ENDIF !
- ' ............................................................................
- b$=LEFT$(a$,gc%-1) ! Insert vorbereiten
- a$=b$+CHR$(26)+RIGHT$(a$,LEN(a$)-gc%+1) ! Insert vollziehen
- LET ga$(gs|)=a$ ! neuen Speicherstring zurückgeb
- ' ............................................................................
- @6_noten_nur_zeigen(gs|,gc%,LEN(a$)) ! Notentextbild aktualisieren
- @3_cursor_setzen !
- raus_insert: !
- ' ----------------------------------------------------------------------------
- RETURN
- > PROCEDURE 2_undo
- ' ----------------------------------------------------------------------------
- LOCAL mgu1$,mgu2$,mguname$ ! Zwischenspeicher
- ' ............................................................................
- CLR gba%,gbe% ! Blockanfang/ende löschen
- ' ............................................................................
- LET mgu1$=gu$(1) ! alte Undostrings Zwnspeichern
- LET mgu2$=gu$(2) !
- LET mguname$=guname$ !
- ' ............................................................................
- LET gu$(1)=ga$(1) ! Neue Undu-strings füllen
- LET gu$(2)=ga$(2) !
- LET guname$=gname$ !
- ' ............................................................................
- LET ga$(1)=mgu1$ ! Akt.Stück=alte Undu-strings
- LET ga$(2)=mgu2$ !
- LET gname$=mguname$ !
- ' ............................................................................
- ' SWAP ga$(2),gu$(2) ! Undostring übergeben |1
- ' SWAP ga$(1),gu$(1) ! Undostring übergeben
- ' ............................................................................
- @5_neues_stueck_zeigen !
- ' ----------------------------------------------------------------------------
- ' |1: Beim Compilieren gab's bei dieser Prozedur Schwierigkeiten (Beim
- ' Interpreter hat's funktioniert!?), deshalb laß ich diese Befehle
- ' jetzt mal raus, auch wegen späterer Kompatibilität zu PCs.
- ' ----------------------------------------------------------------------------
- RETURN
- ' ------------------------------------------------------------------------------
- > PROCEDURE 1_mausanalyse(x%,y%,t|,u%)
- ' ----------------------------------------------------------------------------
- LOCAL s! ! Stimmengleichheit
- LOCAL b! ! auf Blocknote ?
- LOCAL l! ! linke Maustaste ?
- LOCAL r! ! rechte Maustaste ?
- LOCAL v! ! Vor Cursornote ?
- LOCAL h! ! Hinter Cursornote ?
- LOCAL g! ! Direkt auf Cursornote ?
- LOCAL as| ! aktuelle Stimme
- LOCAL p% ! Noten-Platznummer
- ' ............................................................................
- IF y%<17 ! f auf Menüleiste gezeigt
- @2_helptext ! Benutzer aufklären
- GOTO raus_mausanalyse ! raus hier
- ENDIF !
- ' ............................................................................
- @2_welcher_notenplatz(x%,y%,p%,as|) ! auf welche Note zeigt Maus?
- ' ............................................................................
- LET l!=(t|=1) ! linke Maustaste ?
- LET r!=(t|=2) ! rechte Maustaste ?
- ' !
- LET v!=(p%<gc%) ! Vor Cursornote ?
- LET h!=(p%>gc%) ! Hinter Cursornote ?
- LET g!=(p%=gc%) ! Direkt auf Cursornote ?
- ' !
- LET a!=(gbs|=as|) ! aktuelle Stimme = Blockst. ?
- LET b!=((p%>=gba% AND p%<=gbe%) AND a!) ! ex. Block & auf Blocknote ?
- ' !
- LET s!=(gs|=as|) ! letzte Stimme & akt.St.gleich?
- ' ............................................................................
- IF l! AND ((v! OR h!) OR NOT s!) !
- @2_cursor_neu_setzen(p%,u%,as|) !
- ELSE IF l! AND g! AND (NOT b!) AND s! AND u%=0! keine Umschalttaste
- @4_taktstrich_setzen_loeschen !
- ELSE IF r! AND v! AND (NOT b!) AND s! !
- @2_notenabspielen(p%,gc%,u%,gname$) !
- ELSE IF r! AND h! AND (NOT b!) AND s! AND u%=0! keine Umschalttaste
- @4_unt_klav_setzen_loeschen !
- ELSE IF r! AND g! AND (NOT b!) AND s! AND u%=0! keine Umschalttaste
- @4_gebundenzeichen_setzen_loeschen !
- ELSE IF r! AND g! AND s! !
- IF u%=8 ! Alternate
- @4_block_anfang_ende_setzen !
- ELSE IF u%=2 ! Linksshift
- 4_block_kopieren !
- ENDIF !
- ELSE IF r! AND (v! OR h! OR g!) AND b! AND s! !
- IF u%=4 ! Control
- @4_block_loeschen !
- ELSE IF u%=8 ! Alternate
- @4_blocknotenlaengen_verdoppeln !
- ELSE IF u%=0 ! keine Umschalttaste
- @4_blocknoten_transponieren !
- ENDIF !
- ENDIF !
- ' ............................................................................
- raus_mausanalyse: !
- PAUSE 5 ! sonst klappt Leeren nicht
- @a_mauspuffer_leeren !
- ' ----------------------------------------------------------------------------
- RETURN
- > PROCEDURE 2_welcher_notenplatz(x%,y%,VAR platz%,as|)
- ' ----------------------------------------------------------------------------
- LOCAL a% ! Vertikalstart der i|. Zeile
- LOCAL b% ! Vertikalstart der i|+1. Zeile
- LOCAL i| ! Notenzeile
- LOCAL j| ! Notenspalte
- ' ............................................................................
- FOR i|=1 TO 8 ! alle 8 Zeilen durch
- LET a%=gzvs%(i|) ! Vertikalstart der i|. Zeile
- LET b%=gzvs%(i|+1) ! Vertikalstart der i|+1. Zeile
- EXIT IF y%>=a% AND (y%<b% OR i|=8) ! raus f i| die richtige Zeile
- NEXT i| ! nächste Zeile
- LET as|=gs| ! erst mal kein Stimmwechsel
- IF ODD(i|) ! f ungerade Zeile = 1. Stimme
- LET i|=TRUNC(i|/2)+1 ! Doppelzeilennr berechnen
- IF gs|=2 ! f bisher 2. Stimme:
- LET as|=1 ! 1. Stimme ab jetzt ansprechen
- ENDIF !
- ELSE IF EVEN(i|) ! f gerade Zeile = 2. Stimme
- LET i|=i|/2 ! Doppelzeilennr berechnen
- IF gs|=1 ! f bisher 1. Stimme:
- LET as|=2 ! 2. Stimme ab jetzt ansprechen
- ENDIF !
- ENDIF !
- ' ............................................................................
- LET j|=TRUNC(x%/8)+1 ! Spaltennr berechnen
- ' ............................................................................
- platz%=(i|-1)*80+j| ! Notenplatznummer berechnen
- ' ----------------------------------------------------------------------------
- RETURN
- > PROCEDURE 2_notenabspielen(a%,e%,u%,i$)
- ' ----------------------------------------------------------------------------
- LOCAL i% ! Notenzähler
- LOCAL mgc% ! Cursorposition merken
- LOCAL n% ! Tastencode
- LOCAL dauerwiederholung! ! Flag für dito
- LOCAL info! ! Hat Note unnormale Informat.?
- ' ............................................................................
- @a_info("NOTEN ABSPIELEN: "+i$) !
- @1_midi_sounds_setzen ! f Keyboard seit Start mal aus
- @a_mauspuffer_leeren !
- LET mgc%=gc% ! Cursorposition merken
- REPEAT ! Dauerschleife
- FOR i%=a% TO e% ! Alle gewünschten Töne durch
- @2_cursor_neu_setzen(i%,u%,gs|) ! Hier ist Tonabspielen dabei
- @6_noten_info_test(i%,info!) ! Codiert die Note Information?
- IF NOT info! ! f nicht:
- PAUSE gbasistonlaenge| ! Ton aushalten
- ENDIF !
- KEYLOOK n% ! Taste anschauen
- IF MOUSEK=2 ! f rechte Maustaste
- LET dauerwiederholung!=TRUE !
- ELSE IF MOUSEK=1 OR n%=65563 ! f linke Maustaste oder Esc
- LET dauerwiederholung!=FALSE !
- @3_cursor_loeschen !
- EXIT IF TRUE ! raus
- ENDIF !
- NEXT i% ! Nächster Ton
- UNTIL dauerwiederholung!=FALSE !
- @2_cursor_neu_setzen(mgc%,0,gs|) ! Hier ist Tonabspielen dabei
- ' ----------------------------------------------------------------------------
- RETURN
- > PROCEDURE 2_cursor_neu_setzen(p%,u%,as|)
- ' ----------------------------------------------------------------------------
- @3_cursor_loeschen !
- ' ............................................................................
- @4_alter_ton_aus_auf_kanal_3 ! Schlagzeug aus (Taktstrich)
- IF gsw!=TRUE ! f beim letzten Mal Stimmwechs
- LET gsw!=FALSE ! Stimmwechselflag löschen
- @4_blockmarkierung_loeschen !
- ENDIF !
- IF gs|=1 AND as|=2 ! f von 1. auf 2. Stimme gew.
- LET gsw!=TRUE ! Stimmwechsel merken
- @4_alter_ton_aus_auf_kanal_1 ! Kanal 1 entspricht Stimme 1
- ELSE IF gs|=2 AND as|=1 ! f von 2. auf 1. Stimme gew.
- LET gsw!=TRUE ! Stimmwechsel merken
- @4_alter_ton_aus_auf_kanal_2 ! Kanal 2 entspricht Stimme 2
- ENDIF !
- LET gs|=as| ! neue Stimme festsetzen
- ' ............................................................................
- IF p%>LEN(ga$(gs|)) ! f verlangte Position>Endnote
- IF LEN(ga$(gs|))<gm% ! f Stück noch nicht voll:
- LET gc%=LEN(ga$(gs|))+1 ! Cursor hinter Endnote
- ELSE ! f Stück schon voll:
- LET gc%=gm% ! Cursor genau auf Endnote
- ENDIF !
- @4_alter_ton_aus_auf_kanal_1 !
- @4_alter_ton_aus_auf_kanal_2 !
- ELSE ! sonst
- @3_einzelnote_spln(gs|,ga$(1),ga$(2),p%,u%) !
- LET gc%=p% ! Cursor unter Maus
- ENDIF !
- ' ............................................................................
- @3_cursor_setzen !
- ' ----------------------------------------------------------------------------
- ' PROCEDURE 2_notenabspielen(a%,e%,u%)
- ' PROCEDURE 2_neuer_ton(u!,m|)
- ' PROCEDURE 2_taktstrich_setzen_loeschen
- ' PROCEDURE 2_gebundenzeichen_setzen_loeschen
- ' PROCEDURE 2_backspace
- ' PROCEDURE 2_laden
- ' PROCEDURE 2_block_kopieren(p%)
- ' PROCEDURE 2_block_loeschen
- ' PROCEDURE 2_blocknotenlaengen_verdoppeln
- ' PROCEDURE 2_undo
- ' ----------------------------------------------------------------------------
- RETURN
- > PROCEDURE 3_cursor_loeschen
- ' ----------------------------------------------------------------------------
- @3_ton_zeichnen(gc%,gs|) ! Cursor löschen
- IF gc%>=gba% AND gc%<=gbe% AND gs|=gbs| ! f auf Blocknote:
- @6_blockmarkierung_einer_note(gc%) !
- ENDIF !
- ' ----------------------------------------------------------------------------
- RETURN
- > PROCEDURE 3_cursor_setzen
- ' ----------------------------------------------------------------------------
- LOCAL x% ! x-Startkoordinate der Note
- LOCAL y% ! y-Startkoordinate der Note
- LOCAL b$ ! Fotonegativstring
- ' ............................................................................
- LET x%=gx%(gs|,gc%) ! x-Startkoordinate der Note
- LET y%=gy%(gs|,gc%) ! y-Startkoordinate der Note
- PUT x%,y%,gb$(gs|,0) ! Leernote ausgeben
- LET b$=gb$(gs|,ASC(MID$(ga$(gs|),gc%,1))) ! Notenfoto in Abk.variable
- PUT x%,y%,b$,8 ! Note invers ausgeben
- ' ----------------------------------------------------------------------------
- RETURN
- > PROCEDURE 3_einzelnote_spln(s|,n1$,n2$,nr%,u%)
- ' ----------------------------------------------------------------------------
- ' s| ! zu spielende Stimme
- ' n1$,n2$ ! Notenstrings für 1.,2.Stimme
- ' nr% ! Notenplatznr der zu spiel.Nte
- ' u% ! Tastaturumschaltcode 8=2stimg.
- LOCAL th| ! Tonhöhe
- LOCAL x| ! Stimmenzahl für Wavebefehl
- LOCAL g! ! Flag für Attribut: Gebunden
- LOCAL u! ! Flag für untere Klaviatur
- LOCAL t! ! Flag für Taktstrich
- LOCAL mc! ! Merke daß Codierungsnote da
- ' ............................................................................
- @4_alter_ton_aus_auf_kanal_3 ! Schlagzeug aus (Taktstrich)
- ' ............................................................................
- ' T E I L I : ( 1 . S t i m m e )
- ' ............................................................................
- IF s|=2 AND u%<>8 ! f 2.St.akt. und nicht Altern.
- GOTO stimme_2 ! gleich 2.Stimme spielen
- ENDIF !
- ' ............................................................................
- LET x|=x|+1 ! Stimme 1 ein für Wave-Befehl
- ' ............................................................................
- @4_tonanalyse(nr%,n1$,th|,t!,u!,g!) ! Ton analysieren
- ' ............................................................................
- IF g! AND NOT t! ! f mit voriger Note gebunden:
- GOTO stimme_2 ! gleich 2.Stimme spielen
- ELSE IF th|=25 AND u!=TRUE !
- @4_zufall !
- GOTO stimme_2 ! gleich 2.Stimme spielen
- ELSE IF g! AND t! ! Code für Sounds und Geschw.
- LET mc!=TRUE ! Merke daß Codierungsnote da
- @4_sounds_geschwindigkeit(1,th|,u!) !
- GOTO stimme_2 ! gleich 2.Stimme spielen
- ENDIF !
- ' ............................................................................
- @4_alter_ton_aus_auf_kanal_1 ! Kanal 1 entspricht Stimme 1
- ' ............................................................................
- IF t! AND gtaktschl! ! f Taktstrichflag gesetzt:
- @4_neuer_ton_ein_auf_kanal_3 ! Ton ein Kanal 3
- LET x|=x|+8 ! Rauschen für die erste Stimme
- ENDIF !
- ' ............................................................................
- IF th|=0 OR th|=26 ! f kein Ton vorliegt:
- LET x|=x|-1 ! Stimme doch nicht einschaltn
- GOTO stimme_2 ! gleich 2.Stimme spielen
- ENDIF !
- ' ............................................................................
- IF u! ! f untere Klaviatur gefragt:
- LET th|=35+th| ! Midi-Kodierung
- ELSE ! f obere Klaviatur gefragt:
- LET th|=59+th| ! Midi-Kodierung
- ENDIF !
- @4_neuer_ton_ein_auf_kanal_1(th|) ! Ton ein Kanal 1
- LET gat1|=th| ! als alte Tonhöhe merken
- ' ............................................................................
- ' T E I L I I : ( 2 . S t i m m e )
- ' ............................................................................
- stimme_2: ! Sprunglabel für vorher
- IF s|=1 AND u%<>8 ! f 1.St.akt. und nicht Altern.
- GOTO raus_einzelnote_spielen ! unverrichteter Dinge raus
- ENDIF !
- ' ............................................................................
- LET x|=x|+2 ! Stimme 2 ein für Wave-Befehl
- ' ............................................................................
- @4_tonanalyse(nr%,n2$,th|,t!,u!,g!) ! Ton analysieren
- ' ............................................................................
- IF g! AND NOT t! ! f mit voriger Note gebunden:
- GOTO raus_einzelnote_spielen ! unverrichteter Dinge raus
- ELSE IF th|=25 AND u!=TRUE !
- @4_zufall !
- GOTO raus_einzelnote_spielen ! unverrichteter Dinge raus
- ELSE IF g! AND t! ! Code für Sounds und Geschw.
- LET mc!=TRUE ! Merke daß Codierungsnote da
- @4_tonanalyse(nr%,n1$,th|,t!,u!,g!) ! Ton analysieren
- IF NOT u! ! f Atr. f.unt.Kl.nicht gesetzt
- LET th|=th|+24 ! umcodieren |1
- ENDIF !
- IF g! AND t! AND th|>30 ! f in 1.St.Code für Geschw.:
- @4_tonanalyse(nr%,n2$,th|,t!,u!,g!) ! Ton analysieren
- @4_sounds_geschwindigkeit(3,th|,u!) ! Schlagzeug beim Takt ändern
- ELSE ! f in 1.St.kein Code für Ges.
- @4_tonanalyse(nr%,n2$,th|,t!,u!,g!) ! Ton analysieren
- @4_sounds_geschwindigkeit(2,th|,u!) !
- ENDIF !
- GOTO raus_einzelnote_spielen ! unverrichteter Dinge raus
- ENDIF !
- ' ............................................................................
- @4_alter_ton_aus_auf_kanal_2 ! Kanal 2 entspricht Stimme 2
- ' ............................................................................
- IF t! AND u%=0 AND gtaktschl! ! f Taktstrichflag gesetzt:
- @4_neuer_ton_ein_auf_kanal_3 ! Ton ein Kanal 3
- LET x|=x|+16 ! Rauschen für die zweite Stimme
- ENDIF !
- ' ............................................................................
- IF th|=0 OR th|=26 ! f kein Ton vorliegt:
- LET x|=x|-2 ! Stimme doch nicht einschaltn
- GOTO raus_einzelnote_spielen ! unverrichteter Dinge raus
- ENDIF !
- ' ............................................................................
- IF u! ! f untere Klaviatur gefragt:
- LET th|=35+th| ! Midi-Kodierung
- ELSE ! f obere Klaviatur gefragt:
- LET th|=59+th| ! Midi-Kodierung
- ENDIF !
- @4_neuer_ton_ein_auf_kanal_2(th|) ! Ton ein Kanal 2
- LET gat2|=th| ! als alte Tonhöhe merken
- ' ............................................................................
- raus_einzelnote_spielen: !
- IF (NOT gmidi!) AND NOT mc! ! kein Midi & zuletzt keine Codn
- WAVE x| ! Kanal an, GFA-Hanbuch: 6-69
- ENDIF !
- ' ----------------------------------------------------------------------------
- RETURN
- > PROCEDURE 4_neuer_ton_ein_auf_kanal_1(i|)
- ' ----------------------------------------------------------------------------
- IF gmidi! ! f Midi ein:
- OUT 3,144,i|,1 ! Ton ein auf Kanal 1
- ELSE ! f Midi aus
- LET i|=i|-35 ! Midicode decodieren
- IF i|<25 ! f untere beiden Oktaven
- SOUND 1,15,i|,2 ! Ton ein
- ELSE ! f obere beiden Oktaven
- LET i|=i|-24 !
- SOUND 1,15,i|,4 ! Ton ein
- ENDIF !
- ENDIF !
- ' ----------------------------------------------------------------------------
- RETURN
- > PROCEDURE 4_neuer_ton_ein_auf_kanal_2(i|)
- ' ----------------------------------------------------------------------------
- IF gmidi! ! f Midi ein:
- OUT 3,145,i|,1 ! Ton ein auf Kanal 2
- IF i|-12>35 ! f noch auf Klaviatur
- OUT 3,145,i|-12,1 ! Ton ein auf Kanal 2
- ENDIF !
- ELSE ! f Midi aus
- LET i|=i|-35 ! Midicode decodieren
- IF i|<25 ! f untere beiden Oktaven
- SOUND 2,15,i|,2 ! Ton ein
- ELSE ! f obere beiden Oktaven
- LET i|=i|-24 !
- SOUND 2,15,i|,4 ! Ton ein
- ENDIF !
- ENDIF !
- ' ----------------------------------------------------------------------------
- RETURN
- > PROCEDURE 4_neuer_ton_ein_auf_kanal_3
- ' ----------------------------------------------------------------------------
- IF gmidi! ! f Midi ein:
- OUT 3,146,gschl|+35,1 ! Ton ein auf Kanal 3
- ENDIF !
- ' ----------------------------------------------------------------------------
- RETURN
- > PROCEDURE 4_alter_ton_aus_auf_kanal_1
- ' ----------------------------------------------------------------------------
- IF gmidi! ! f Midi ein:
- OUT 3,128+0,gat1|,1 ! alter Ton aus auf Kanal 1
- ELSE ! f Midi aus
- ENDIF !
- ' ----------------------------------------------------------------------------
- ' PROCEDURE 2_cursor_neu_setzen(p%,u%,as|)
- ' ----------------------------------------------------------------------------
- RETURN
- > PROCEDURE 4_alter_ton_aus_auf_kanal_2
- ' ----------------------------------------------------------------------------
- IF gmidi! ! f Midi ein:
- OUT 3,128+1,gat2|,1 ! alter Ton aus auf Kanal 2
- IF gat2|-12>35 ! f noch auf Klaviatur
- OUT 3,128+1,gat2|-12,1 ! alter Ton aus auf Kanal 2
- ENDIF !
- ELSE ! f Midi aus
- ENDIF !
- ' ----------------------------------------------------------------------------
- ' PROCEDURE 2_cursor_neu_setzen(p%,u%,as|)
- ' ----------------------------------------------------------------------------
- RETURN
- > PROCEDURE 4_alter_ton_aus_auf_kanal_3
- ' ----------------------------------------------------------------------------
- IF gmidi! ! f Midi ein:
- OUT 3,130,gschl| ! alter Ton aus auf Kanal 3
- ELSE ! f Midi aus
- ENDIF !
- ' ----------------------------------------------------------------------------
- ' PROCEDURE 2_cursor_neu_setzen(p%,u%,as|)
- ' ----------------------------------------------------------------------------
- RETURN
- > PROCEDURE 4_zufall
- ' ----------------------------------------------------------------------------
- LOCAL t| !
- LOCAL i% !
- ' ............................................................................
- FOR i%=1 TO 1000 ! Tausend Noten zufällig
- LET t|=RANDOM(50)+1+35 !
- @4_neuer_ton_ein_auf_kanal_1(t|) ! Ton ein Kanal 1
- LET t|=RANDOM(50)+1+35 !
- @4_neuer_ton_ein_auf_kanal_2(t|) ! Ton ein Kanal 2
- LET gschl|=RANDOM(50)+1+35 !
- @4_neuer_ton_ein_auf_kanal_3 ! Ton ein Kanal 3
- LET t|=RANDOM(50)+1 !
- PAUSE t| !
- EXIT IF INKEY$<>""
- NEXT i% !
- ' ----------------------------------------------------------------------------
- RETURN
- > PROCEDURE 4_sounds_geschwindigkeit(s|,t|,u!)
- ' ----------------------------------------------------------------------------
- IF NOT u! ! f Atr. f.unt.Kl.nicht gesetzt
- LET t|=t|+24 ! umcodieren |1
- ENDIF !
- ' ............................................................................
- IF s|=3 ! f Schlagzeug geändert w.soll
- LET gschl|=t| ! neues Schlagzeug
- ELSE IF t|>30 ! f Geschwindigkeitsänderung:
- LET t|=t|-30 ! umcodieren
- LET gbasistonlaenge|=t| ! Wie lang soll ein Ton dauern
- LET gschl|=3 ! normales Schlagzeug
- ELSE IF s|=1 ! f Soundänderung Stimme 1
- LET gk1|=t|-1 ! Sound Kanal 1
- ELSE IF s|=2 ! f Soundänderung Stimme 2
- LET gk2|=t|-1 ! Sound Kanal 2
- ENDIF !
- @1_midi_sounds_setzen !
- ' ----------------------------------------------------------------------------
- ' |1: Aus t| und u! wird hier ein neues t| produziert, das Zahlen
- ' von 1-49 beinhalten kann.
- ' ----------------------------------------------------------------------------
- RETURN
- ' ------------------------------------------------------------------------------
- > PROCEDURE 1_klaviaturanalyse(m$,u%,n%)
- ' ----------------------------------------------------------------------------
- LOCAL midi| ! Tonhöhencode
- LOCAL unt_klh! ! Flag für unt.Klav.hälfte setzn
- ' ............................................................................
- IF u%<>8 AND u%<>16+8 ! f nicht Alternate gedrückt:
- IF n%<>3.73558E+06 AND n%<>3.01476E+06 ! f nicht Space oder 'c' gedr.:
- GOTO raus_klaviaturanalyse ! Abbruch der Prozedur
- ENDIF !
- ENDIF !
- ' ............................................................................
- LET midi|=ASC(LEFT$(m$,1)) ! Tonhöhe (midicodiert)feststlln
- IF midi|>59 AND midi|<85 ! f Tonhöhe innerhlb Okt 3 und 4
- LET midi|=midi|-59 ! auf Duedita-Kodierung bringen
- ELSE IF midi|>35 AND midi|<60 ! f Tonhöhe innerhlb Okt 1 und 2
- LET midi|=midi|-35 ! auf Duedita-Kodierung bringen
- LET unt_klh!=TRUE ! Flag für unt.Klav.hälfte setzn
- ELSE IF n%=3.73558E+06 ! f Spacetaste gedrückt:
- LET midi|=26 ! Code für Pause
- ELSE IF n%=3.01476E+06 ! f 'c' gedrückt:
- LET midi|=25 ! oberes c der unt. beiden Okt.
- LET unt_klh!=TRUE ! Flag für unt.Klav.hälfte setzn
- ELSE ! f unerlaubte Midi-Daten:
- GOTO raus_klaviaturanalyse ! Abbruch der Prozedur
- ENDIF !
- @2_neuer_ton(unt_klh!,midi|) !
- ' ............................................................................
- ' PRINT AT(1,1);m$;"' midi|='";midi|;"' "
- raus_klaviaturanalyse: ! Raus-label
- ' ............................................................................
- IF n%<>3.73558E+06 AND n%<>3.01476E+06 ! f Keyboardtaste gedrückt:
- PAUSE 10 ! Auf Midi-Müll warten
- REPEAT ! Midi-Puffer löschen
- UNTIL INPMID$="" OR n%=3.73558E+06 !
- ELSE ! f Computertaste gedrückt:
- @a_tastaturpuffer_leeren !
- ENDIF !
- ' ----------------------------------------------------------------------------
- RETURN
- > PROCEDURE 2_neuer_ton(u!,m|)
- ' ----------------------------------------------------------------------------
- @3_ton_speichern(gc%,gs|,0,u!,0,m|) !
- @3_ton_zeichnen(gc%,gs|) !
- @2_cursor_neu_setzen(gc%+1,0,gs|) !
- ' ----------------------------------------------------------------------------
- RETURN
- > PROCEDURE 3_ton_speichern(p%,s|,t!,u!,g!,m|)
- ' ----------------------------------------------------------------------------
- LOCAL a| ! Abkürzung für Speicherinhalt
- ' ............................................................................
- LET a|=m|+32*ABS(t!)+64*ABS(u!)+128*ABS(g!) ! Tonhöhe + Attribut Unt.Kl.!=u!
- ' ............................................................................
- IF p%>1 ! f es mehr als 1 Ton gibt:
- @4_tonanalyse(p%-1,ga$(s|),th|,t!,u!,g!) ! Ton analysieren
- IF th|=m| AND th|<>26 AND th|<>26+32 ! f gleiche Tonhöhe,keine Pause
- LET a|=BSET(a|,7) ! Attribut gebunden löschen
- ENDIF !
- ENDIF !
- ' ............................................................................
- IF MID$(ga$(s|),p%,1)="" ! f an gefragter Stelle nix ist
- LET ga$(s|)=ga$(s|)+" " ! Leerplatz schaffen
- ENDIF !
- MID$(ga$(s|),p%,1)=CHR$(a|) ! Abkürzung an Speicherstrng üb.
- ' ----------------------------------------------------------------------------
- RETURN
- > PROCEDURE 4_tonanalyse(p%,n$,VAR th|,taktstr!,unt_kl!,gebunden!)
- ' ----------------------------------------------------------------------------
- ' n$ ! |1
- LOCAL a$ ! Byte der Notencharakteristik
- LOCAL a| ! Abkürzung für Speicherinhalt
- ' ............................................................................
- LET a|=ASC(MID$(n$,p%,1)) ! Notencharakteristik Abkürzen
- LET a$=BIN$(a|,8) ! Notenchar. als Byte darstellen
- LET gebunden!=(-1)*VAL(MID$(a$,1,1)) ! Gebundenflag
- LET unt_kl!=(-1)*VAL(MID$(a$,2,1)) ! Unt.Kl.flag
- LET taktstr!=(-1)*VAL(MID$(a$,3,1)) ! Taktstrichflag
- LET th|=VAL("%"+MID$(a$,4,5)) ! Tonhöhe
- ' ----------------------------------------------------------------------------
- ' |1: Im Normalfall wird n$=ga$(s|) sein, aber um auch etwas anderes
- ' zuzulassen, z.B. in '4_best_st_direkt_hintereinander_sp',
- ' wird hier mit Übergabestring gearbeitet.
- ' ----------------------------------------------------------------------------
- RETURN
- > PROCEDURE 3_ton_zeichnen(p%,s|)
- ' ----------------------------------------------------------------------------
- LOCAL a| ! Abkürzung für Speicherinhalt
- ' ............................................................................
- LET a|=ASC(MID$(ga$(s|),p%,1)) ! Notencharakteristik Abkürzen
- PUT gx%(s|,p%),gy%(s|,p%),gb$(s|,a|) ! Note zeichnen
- ' ----------------------------------------------------------------------------
- ' PROCEDURE 2_taktstrich_setzen_loeschen
- ' PROCEDURE 2_cursor_neu_setzen(p%,u%,as|)
- ' ----------------------------------------------------------------------------
- RETURN
- ' ##############################################################################
- ' M I N I B I B L I O T H E K :
- ' ##############################################################################
- > PROCEDURE s
- ' ----------------------------------------------------------------------------
- LOCAL bld$ ! Bildrettungsstring
- ' ............................................................................
- SGET bld$ ! Bild retten
- HIDEM ! Maus weg
- @a_tastaturpuffer_leeren !
- PBOX 0,0,639,399 ! Alles schwarz
- @a_auf_taste_warten !
- SPUT bld$ ! Bild retten
- SHOWM ! Maus her
- ' ----------------------------------------------------------------------------
- ' Diese Prozedur hat nur den Namen 's', damit man sie auch vom Interpreter
- ' aus schnell aufrufen kann.
- ' ----------------------------------------------------------------------------
- RETURN
- > PROCEDURE a_info(info$)
- ' ----------------------------------------------------------------------------
- PRINT AT(1,1);info$+SPACE$(80-LEN(info$)) !
- ' ----------------------------------------------------------------------------
- RETURN
- > PROCEDURE a_gepunktete_linie
- ' ----------------------------------------------------------------------------
- DEFLINE &X11111111111111111010101010101011,1,0,0 ! gepunktete Linie
- ' ----------------------------------------------------------------------------
- RETURN
- > PROCEDURE a_tastaturpuffer_leeren
- ' ----------------------------------------------------------------------------
- LOCAL n% !
- ' ............................................................................
- REPEAT !
- KEYLOOK n% !
- IF n% !
- KEYGET n% !
- ENDIF !
- UNTIL n%=0 !
- ' ----------------------------------------------------------------------------
- RETURN
- > PROCEDURE a_mauspuffer_leeren
- ' ----------------------------------------------------------------------------
- PAUSE 4 !
- REPEAT ! Mauspuffer leeren
- UNTIL NOT MOUSEK !
- ' ----------------------------------------------------------------------------
- RETURN
- > PROCEDURE a_midi_analyse
- ' ----------------------------------------------------------------------------
- DO !
- LET a$=INPMID$ !
- IF a$<>"" !
- PRINT a$,LEN(a$) !
- PAUSE 10 !
- REPEAT ! Midi-Puffer löschen
- UNTIL INPMID$="" !
- ENDIF !
- LOOP !
- EDIT !
- ' ----------------------------------------------------------------------------
- RETURN
- > PROCEDURE a_fehler_abfangen
- ' ----------------------------------------------------------------------------
- ' Im Falle daß ein Fehler im Programmablauf auftaucht, wird wegen des aller-
- ' ersten Befehls des Programms 'on error gosub a_fehler_abfangen' hierher-
- ' gesprungen. So kann dann der Text erst einmal gerettet werden:
- ' ----------------------------------------------------------------------------
- LOCAL d| ! Dummy für Alertbox
- ' ............................................................................
- PRINT CHR$(7); ! klingeln
- PRINT AT(1,3);ERR$(ERR);" Fatal=";FATAL ! Außerhalb GFA-Basic?
- ' ............................................................................
- ERASE g!() ! Boolearray für Menü |1
- @a_alert("Programmfehler!/Abspeichern!",d|) !
- ' ............................................................................
- @4_hauptfile_abspeichern !
- ' ............................................................................
- ERASE h$() ! Hauptmenüeintragsliste
- @0_oberste_schleife_hauptprogramm ! ob's noch weiter geht?
- ' ----------------------------------------------------------------------------
- ' |1: Dieser Boolarray taucht in mehreren Prozeduren auf, immer dann,
- ' wenn die große Menüprozedur meiner Menübibliothek aufgerufen
- ' wird. Bei Alert wird diese auch aufgerufen und der Boolarray
- ' g!() wieder neu dimensioniert. Damit dann kein zusätzlicher
- ' Fehler auftauchen kann, wird er vorsichtshalber vor dem
- ' a_alert-Aufruf gelöscht.
- ' ----------------------------------------------------------------------------
- RETURN
- > PROCEDURE a_zeichnen_und_punkte_abspeichern
- ' ----------------------------------------------------------------------------
- ' Prg zum Zeichnen eines Strichbildes und zum Absp. der Punkte 'ZCHNABSP.GFA'
- ' ----------------------------------------------------------------------------
- ' @a_zeichnen_und_punkte_abspeichern !
- ' @a_rekonstruktionszeichnung ! entspricht 1_notenschluessel
- ' ----------------------------------------------------------------------------
- LOCAL t| ! Maustaste
- LOCAL m| ! Auswahl bei Alertbox
- LOCAL i% ! Linienzähler
- LOCAL x%,y%,mx%,my% ! Punkte
- LOCAL a$ ! Alertboxtext / DATA-LINE
- DIM p%(1000,4) ! Liniendaten (je Linie 4)
- ' ............................................................................
- nochmal_zeichnen: !
- CLR mx%,my%,i% !
- REPEAT !
- MOUSE x%,y%,t| !
- IF t|=1 !
- IF mx%<>0 AND my%<>0 !
- LINE x%,y%,mx%,my% !
- SHOWM !
- PAUSE 5 !
- INC i% !
- LET p%(i%,1)=x% !
- LET p%(i%,2)=y% !
- LET p%(i%,3)=mx% !
- LET p%(i%,4)=my% !
- ENDIF !
- IF i%=999 !
- ALERT 1,"zuviel!",1,"Abbruch",w| !
- LET t|=2 !
- ENDIF !
- LET mx%=x% !
- LET my%=y% !
- ELSE !
- CLR mx%,my% !
- ENDIF !
- UNTIL t|=2 !
- ' ............................................................................
- a$="speichern/nochmal/abbrechen" !
- ALERT 1,a$,2,"sp|nochm|abbr",w|
- IF w|=2 !
- GOTO nochmal_zeichnen !
- ELSE IF w|=3 !
- GOTO ende_zeichnen_abspeichern !
- ENDIF !
- ' ............................................................................
- OPEN "O",#1,"ZCHNDATN.LST" !
- FOR j%=1 TO i% !
- LET a$="DATA " !
- FOR k%=1 TO 4 !
- LET a$=a$+STR$(p%(j%,k%))+"," !
- NEXT k% !
- LET a$=LEFT$(a$,LEN(a$)-1) ! letztes Komma weg
- PRINT #1,a$ !
- NEXT j% !
- CLOSE #1 !
- ' ............................................................................
- ende_zeichnen_abspeichern: !
- ERASE p%() !
- ' ----------------------------------------------------------------------------
- RETURN
- > PROCEDURE a_nat_zahl_test(k$,VAR k!)
- ' ----------------------------------------------------------------------------
- ' Diese Prozedur schaut, ob in k$ eine natürliche Zahl (0,1,2,3,...). Falls
- ' ja, setzt sie den Rückgabeparameter: k!=TRUE, falls nein: k!=FALSE.
- ' ----------------------------------------------------------------------------
- ' k$ ! Eingabe,die getestet werd soll
- ' k! ! soll(-1) werden,fEing.nat.Zahl
- LOCAL i% ! Zeichenzähler für Eingabe
- LET k!=TRUE ! Seien wir optimistisch
- ' ............................................................................
- FOR i%=1 TO LEN(k$) ! Alle Stellen der Eingabe durch
- LET a|=ASC(MID$(k$,i%,1)) ! Ascii-Code der i%-ten Stelle
- IF a|<48 OR a|>57 ! f an i%-Stelle keine Ziffer:
- LET k!=FALSE ! Aus der Traum...
- ENDIF !
- NEXT i% ! nächste Stelle der Eingabe
- ' ----------------------------------------------------------------------------
- RETURN
- > PROCEDURE a_auf_taste_warten
- ' ----------------------------------------------------------------------------
- REPEAT ! Maus- und Tastaturpuffer
- UNTIL MOUSEK=0 AND INKEY$="" ! entleeren.
- REPEAT ! Warteschleife
- UNTIL INKEY$<>"" OR MOUSEK<>0 !
- ' ----------------------------------------------------------------------------
- RETURN
- ' ##############################################################################
- ' M E N Ü B I B L I O T H E K :
- ' ##############################################################################
- > PROCEDURE a_alert(a1$,VAR w1|)
- t0t|=21
- ' ----------------------------------------------------------------------------
- ' Diese Prozedur entspricht einer Gem-Alertbox, es sind aber viel mehr
- ' Einträge möglich.
- ' Ein Alertübergabestring (Bsp.: "Hallo|Du ! Bist Du's ?/Ja|Nein") besteht
- ' aus einem Teil der nur angezeigt wird (der steht vor dem '/') und einem
- ' Teil, bei dem man aus den verschiedenen Einträgen auswählen kann (der
- ' steht hinter dem '/'). Beide Teile zusammen dürfen höchstens 20 Einträge
- ' haben, die höchstens 78 Zeichen breit sind
- ' ----------------------------------------------------------------------------
- LOCAL i1% ! Zähler für Analyse des Menüeintragsstrings
- LOCAL i1| ! Zähler für Analyse des Menüeintragsstrings
- LOCAL j1| ! Zähler für Menüeintrage (erst nicht,dann whlb)
- LOCAL l1| ! Längenmaximum aller Einträge
- LOCAL mxb1| ! Maximum der nur anzuzeigenden Menüeinträge
- LOCAL mxw1| ! Maximum der wählbaren Menüeinträge
- LOCAL bld1$ ! Bildspeicher
- LOCAL sx1| ! Start-x-Spalte der Einträge
- LOCAL sy1| ! Start-y-Zeile der Einträge
- DIM x!(gm|) ! Boolearray für Menü
- ' ............................................................................
- FOR i1%=1 TO LEN(a1$) ! String durch
- IF MID$(a1$,i1%,1)="|" ! Grenze errcht
- INC j1| ! Zählr erhöh.
- ENDIF !
- IF MID$(a1$,i1%,1)="/" ! Grenze errcht
- LET mxb1|=j1|+1 ! Mx nur Bild
- CLR j1| ! Zähler null
- ENDIF !
- NEXT i1% ! nächst Buchst
- LET mxw1|=j1|+1 ! Mx wählbar
- ' ............................................................................
- DIM b1$(mxb1|) ! Array für Menü mit nur angezeigten Eintägen
- DIM w1$(mxw1|) ! Array für Menü mit wählbaren Eintägen
- ' ............................................................................
- ' Jetzt werden erst 'mal die Nurbildeinträge ausgefiltert
- LET j1|=1 ! Eintragszähler 1
- FOR i1|=1 TO LEN(a1$) ! aString durch
- LET mi1$=MID$(a1$,i1|,1) ! akt. Zchn merken
- IF mi1$="|" OR mi1$="/" ! Eintragsgrenze errcht
- LET b1$(j1|)=LEFT$(a1$,i1|-1) ! Nurbildeintrag setzen
- IF l1|<LEN(b1$(j1|)) ! F neues Längenmaximum
- LET l1|=LEN(b1$(j1|)) ! übernehmen
- ENDIF !
- LET a1$=RIGHT$(a1$,LEN(a1$)-i1|) ! aString kürzen
- CLR i1| ! Zeichenzähler null
- INC j1| ! Eintragszählr erhöh.
- ENDIF !
- EXIT IF mi1$="/" ! Menügrenze errcht
- NEXT i1| ! nächst Buchst
- LET a1$=RIGHT$(a1$,LEN(a1$)-i1|) ! aString kürzen
- ' ............................................................................
- ' Jetzt werden die Wahleinträge ausgefiltert
- LET j1|=1 ! Eintragszähler 1
- REPEAT ! aString durch
- INC i1| ! nächste Zeichennummer
- LET mi1$=MID$(a1$,i1|,1) ! akt. Zchn merken
- IF mi1$="|" OR mi1$="/" ! Eintragsgrenze errcht
- LET w1$(j1|)=LEFT$(a1$,i1|-1) ! Wahleintrag setzen
- IF l1|<LEN(w1$(j1|)) ! F neues Längenmaximum
- LET l1|=LEN(w1$(j1|)) ! übernehmen
- ENDIF !
- LET a1$=RIGHT$(a1$,LEN(a1$)-i1|) ! aString kürzen
- CLR i1| ! Zeichenzähler null
- INC j1| ! Eintragszählr erhöh.
- ENDIF !
- UNTIL i1|=LEN(a1$) ! aString ganz durch
- LET w1$(j1|)=a1$ ! Wahleintrag setzen
- ' ............................................................................
- IF b1$(1)<>"" !
- LET b1$(1)=LEFT$(b1$(1)+SPACE$(l1|),l1|)! Mit Spaces auffüllen
- ENDIF !
- IF w1$(1)<>"" !
- LET w1$(1)=LEFT$(w1$(1)+SPACE$(l1|),l1|)! Mit Spaces auffüllen
- ENDIF !
- ' ............................................................................
- LET sx1|=ROUND((80-l1|)/2) ! Startspalte
- LET sy1|=ROUND((22-mxb1|)/2) ! Startzeile
- ' ............................................................................
- ' Alertausschnitt (Kasten, der der Alertbox entspricht) ausschneiden, retten:
- GET (sx1|-1)*8-1,(sy1|-1)*16,sx1|*8+l1|*8,sy1|*16+(mxb1|+mxw1|)*16,bld1$
- ' ............................................................................
- @m(0,-1,0,0,0,0,-1,sx1|,sy1|,1,mxb1|,dummy1|,dummy1|,b1$(),x!())
- REPEAT ! Solange neues Menü,
- @m(0,-1,-1,-1,0,0,-1,sx1|,sy1|+mxb1|,1,mxw1|,dummy1|,w1|,w1$(),x!())
- UNTIL w1|<>0 ! bis Eintrag gewählt
- ' ............................................................................
- PUT (sx1|-1)*8-1,(sy1|-1)*16,bld1$ ! Alertausschnitt zurück
- ' ............................................................................
- ERASE b1$() ! Array für Menü mit nur angezeigten Eintägen
- ERASE w1$() ! Array für Menü mit wählbaren Eintägen
- ERASE x!() ! Boolearray für Menü
- ' ----------------------------------------------------------------------------
- RETURN
- > PROCEDURE m(iv!,ad!,wv!,we1!,wex!,inp!,rmn!,sx|,sy|,sp|,zl|,VAR m|,w|,a$(),a!())
- t0t|=22
- ' ----------------------------------------------------------------------------
- ' Mit dieser Prozedur kann man ein Menü erzeugen. Dessen Einträge müssen
- ' sich im Übergabearray a$() befinden. Welcher Eintrag gewählt wurde,
- ' erfährt man nach Prozedurende im Rückgabeparametzer w|. Es gibt
- ' einige Zusätzliche Einstellungen, die im folgenden aufgelistet sind:
- ' ----------------------------------------------------------------------------
- '
- ' Übergabevariablen:
- '
- ' iv! = Invertierte Darstellung des Eintrags belassen (-1) oder nicht (0) ?
- ' ad! = Auch Darstellung des Menüs ? nein=0, ja=-1
- ' wv! = Wahlvorschlag (1.Eintrag) ein (-1) oder aus (0)
- ' we1! = wählbare Einträge(nur 1) (-1) oder nicht (0: also Menü nur abbilden)
- ' wex! = alle (insbes. mehr als ein Eintrag) Einträge wählbar ? ja=-1, nein=0
- ' inp! = Input (-1:schließt bis jetzt wex!=-1 aus!) oder nicht (0)
- ' rmn! = Rahmen (-1) oder nicht (0)
- ' sx| = Start-x-Koordinate (in Zeichen) von Menüeinträgen links
- ' sy| = Start-y-Koordinate (in Zeichen) von Menüeinträgen oben
- ' sp| = Spaltenanzahl der Menüeinträge
- ' zl| = Zeilenanzahl der Menüeinträge
- ' m| = Maustastennummer 1=linke, 2=rechte Maustaste zurück !
- ' w| = Wahlnummer des gewählten Eintrages zurück ! (0=Abbruch)
- ' a$() = Eintragsarray, hier sind alle Einträge drin auch zurück !
- ' a!() = Wahlarray hier steht an erster Stelle eine 0, falls der entsprechende
- ' Eintrag in a$() nicht gewählt und -1, falls er gewählt.
- '
- ' ............................................................................
- LOCAL di| ! Die Anzahl der Spaces, die wegen der Inputfunktion
- ' ! jedem Eintrag hinten drangefügt werden (in letzter
- ' ! Procedure wieder abgezogen)
- LOCAL ml| ! Eintragslängenmaximum
- ' ............................................................................
- REPEAT ! Maus- und Tastaturpuffer
- UNTIL MOUSEK=0 AND INKEY$="" ! entleeren.
- ' ............................................................................
- @a_menueeintraege_maximieren(sp|,zl|,ml|,di|,a$()) !
- IF rmn!=TRUE ! Mit Rahmen
- @a_menuerahmen(ml|,sx|,sy|,sp|,zl|) !
- ENDIF !
- IF we1!=0 AND ad! ! Menü nur anzgen
- @a_menue_anzeigen(ml|,sx|,sy|,sp|,zl|,a$()) !
- ELSE IF inp!=0 ! Wählen oh.Input
- IF ad! ! f auch darstellen
- @a_menue_anzeigen(ml|,sx|,sy|,sp|,zl|,a$()) !
- ENDIF !
- IF wex! ! F alle Einträge wählb.
- @a_eintraege_waehlen(wv!,ml|,sx|,sy|,sp|,zl|,a$(),a!(),m|,w|) !
- ELSE ! F nur 1 Eintrag wählb.
- @a_eintrag_waehlen(iv!,wv!,ml|,sx|,sy|,sp|,zl|,a$(),m|,w|) !
- ENDIF !
- ELSE ! Wähln mit Input
- IF ad! ! f auch darstellen
- @a_menue_anzeigen(ml|,sx|,sy|,sp|,zl|,a$()) !
- ENDIF !
- @a_eintrag_waehlen(iv!,wv!,ml|,sx|,sy|,sp|,zl|,a$(),m|,w|) !
- IF w|<>0 ! F Eintrag gew.
- @a_eintraginput(ml|,di|,sx|,sy|,sp|,zl|,m|,w|,a$()) !
- IF a$(w|)=" " ! F nix eingeg.
- LET w|=0 ! Abbruchcode
- ENDIF !
- ENDIF !
- ENDIF !
- @a_menueeintraege_minus_di8(sp|,zl|,ml|,di|,a$()) ! Inputzusatz wiederweg
- ' ----------------------------------------------------------------------------
- RETURN
- > PROCEDURE a_menueeintraege_maximieren(sp3|,zl3|,VAR ml3|,di3|,a3$())
- t2t|=23
- ' ----------------------------------------------------------------------------
- ' Hier werden alle Einträge mit Spaces aufgefüllt, bis sie alle gleich
- ' lang sind.
- ' ----------------------------------------------------------------------------
- ' di3| ! Zusätzliche Spaces am Ende jedes
- ' ! Eintrages, um nachher korrektes
- ' ! Input zu ermöglichen
- ' ! Diese Variable ist Rückgabeparameter
- ' ml3| ! Eintragslängenmaximum ist "
- ' ............................................................................
- LOCAL i3| ! Zähler für Einträge
- ' ............................................................................
- LET di3|=1 ! Für Input zusätliche di3| Spaces
- LET ml3|=0 ! Eintragslängenmaximum null setzen
- ' ............................................................................
- FOR i3|=1 TO sp3|*zl3| ! Alle Einträge durch
- IF LEN(a3$(i3|))>ml3| ! Falls Eintrag größer als bisher
- LET ml3|=LEN(a3$(i3|)) ! Maximum Eintraglänge neu setzen
- ENDIF !
- NEXT i3| ! nächster Eintrag
- ' ............................................................................
- FOR i3|=1 TO sp3|*zl3| !Alledurch
- a3$(i3|)=LEFT$(a3$(i3|)+SPACE$(ml3|),ml3|)!Auffüllen
- a3$(i3|)=a3$(i3|)+SPACE$(di3|) !für Input
- NEXT i3| ! nächster
- ' ............................................................................
- ADD ml3|,di3| ! Eintragslänge anpassen
- ' ----------------------------------------------------------------------------
- RETURN
- > PROCEDURE a_menuerahmen(ml4|,sx4|,sy4|,sp4|,zl4|)
- t2t|=24
- ' ----------------------------------------------------------------------------
- ' In dieser Prozedur erhält das kommende Menü einen Rahmen.
- ' ----------------------------------------------------------------------------
- LOCAL dx4| ! Distanz zwischen Rahmen und Eintragsrand in x-Richtung
- LOCAL dy4| ! Distanz zwischen Rahmen und Eintragsrand in y-Richtung
- LOCAL lx4% ! Position des Rahmens links
- LOCAL oy4% ! Position des Rahmens oben
- LOCAL rx4% ! Position des Rahmens rechts
- LOCAL uy4% ! Position des Rahmens unten
- ' ............................................................................
- LET dx4|=1 ! Randabstand x
- LET dy4|=1 ! Randabstand y
- LET lx4%=(sx4|-1)*8-dx4| ! Links
- LET oy4%=sy4|*16-dy4| ! Oben
- LET rx4%=lx4%+ml4|*sp4|*8+dx4| ! Rechts
- LET uy4%=oy4%+zl4|*16+dy4| ! Unten
- ' ............................................................................
- BOX lx4%,oy4%,rx4%,uy4% ! Rahmen Zeichnen
- ' ----------------------------------------------------------------------------
- RETURN
- > PROCEDURE a_menue_anzeigen(ml5|,sx5|,sy5|,sp5|,zl5|,VAR a5$())
- t2t|=25
- ' ----------------------------------------------------------------------------
- ' In dieser Prozedur wird das Menü erst einmal nur angezeigt. Wählen kann
- ' man hier also noch nicht.
- ' ----------------------------------------------------------------------------
- LOCAL i5| ! Spaltenzähler für Eintragsspalten
- LOCAL j5| ! Zeilenzähler für Eintragsszeilen
- LOCAL k5| ! Eintragszähler
- ' ............................................................................
- FOR i5|=1 TO sp5| ! Alle Spalten durch
- FOR j5|=1 TO zl5| ! Alle Zeilen durch
- INC k5| ! Nächster Eintrag; Ausgeben:
- PRINT AT(sx5|+(i5|-1)*ml5|,sy5|+j5|);a5$(k5|)
- NEXT j5| ! Nächste Zeile
- NEXT i5| ! Nächste Spalte
- ' ----------------------------------------------------------------------------
- RETURN
- > PROCEDURE a_eintrag_waehlen(iv!,wv!,ml|,sx|,sy|,sp|,zl|,VAR a$(),m|,w|)
- t2t|=26
- ' ----------------------------------------------------------------------------
- ' Diese Prozedur sorgt dafür, daß der Menüeintrag, auf den die Maus gerade
- ' zeigt, invers dargestellt wird. Dabei wird natürlich der letzte Eintrag
- ' wieder normal dargestellt. Falls der erste Übergabeparameter wv!
- ' wahr ist, so wird der erste Eintrag beim Aufruf der Prozedur automatisch
- ' invers dargestellt, so daß die Maus gar nicht mehr gebraucht wird. Ein
- ' Druck auf die [Return]-Taste reicht, um den vorgeschlagenen Eintrag als
- ' gewählt zu betrachten und die Prozedur zu verlassen. Statt der [Return]-
- ' Taste kann man auch die linke Maustaste zum entültigen wählen benutzen.
- ' ----------------------------------------------------------------------------
- LOCAL mef! ! Maus nicht auf Menüeintrag ?
- LOCAL erst! ! Erster Durchgang ?
- LOCAL bs! ! Bildschirm schwarz gewesen ?
- LOCAL i| ! Hier steht die Eintragsnummer
- LOCAL n% ! Tastencode
- LOCAL t% ! Zeitmesser für Bildschirmabschaltung
- LOCAL x% ! Maus-x-Koordinate
- LOCAL y% ! Maus-y-Koordinate
- LOCAL sm% ! Die Spalte, auf die die Maus gerade zeigt
- LOCAL zm% ! Die Zeile, auf die die Maus gerade zeigt
- LOCAL ms% ! Speicher für sm%
- LOCAL mz% ! Speicher für mz%
- LOCAL st% ! Spaltenterm
- LOCAL zt% ! Zeilenterm
- LOCAL mx% ! Speicher für x-Koordinate
- LOCAL my% ! Speicher für y-Koordinate
- LOCAL b$ ! Negativspeicher für Bildschirmrettung
- ' ............................................................................
- LET erst!=TRUE ! Erster Durchgang
- ' ............................................................................
- REPEAT ! Mausabfrageschleife
- ' ..........................................................................
- LET mef!=FALSE ! Maus ist erst mal evtl. auf Menüeintrag
- ' ..........................................................................
- IF NOT bs! ! F Bildschirm nicht schwarz:
- SHOWM ! Mauszeiger bitte an und zwar immer !!!
- ENDIF !
- ' ..........................................................................
- LET x%=MOUSEX ! Maus-x-Koordinate
- LET y%=MOUSEY ! Maus-y-Koordinate
- ' ..........................................................................
- ' ! S c h w a r z s c h a l t u n g :
- INC t% ! Zeitmesser raufsetzen
- IF t%=40000 ! F Zeit für Bildschirmabschaltung:
- HIDEM ! Maus weg
- IF bs!=FALSE ! F Bildschirm bisher noch nicht schwarz
- SGET b$ ! Bildschirm retten
- ENDIF !
- PBOX 0,0,gbb%,gbh% ! Bildschirm schwarz
- PRINT AT(1,1);CHR$(27);CHR$(112);SPACE$(80);CHR$(27);CHR$(113); ! |1
- LET bs!=TRUE ! Bildschirm schwarz merken
- LET t%=0 ! Weiterlaufen ohne Overflow, deshalb null setzen
- ENDIF !
- KEYLOOK n% !
- IF mx%<>x% OR my%<>y% OR n% ! F Mausbewegung oder Tastendruck
- IF bs!=TRUE ! f Blds. bisher schwarz:
- LET t%=0 ! Weiterlaufen ohne Overflow
- LET bs!=FALSE ! Bildschirm nicht mehr schwarz
- SPUT b$ ! Bildschirm wieder herstellen
- LET b$="" ! Versuch, Fehler: 'Speicher voll' zu verhindern
- SHOWM ! Maus her
- ELSE ! Bildschirm nicht schwarz:
- LET t%=0 !
- ENDIF !
- ENDIF !
- LET mx%=MOUSEX ! X-Koordinate der Maus merken
- LET my%=MOUSEY ! Y-Koordinate der Maus merken
- ' ..........................................................................
- LET st%=x%-sx|*8 ! Spaltenterm
- LET zt%=y%-sy|*16 ! Zeilenterm
- ' Aktuelle Spalte (sm%) und Zeile (zm%) ermitteln:
- LET sm%=TRUNC((st%)/(ml|*8))+1 ! Akt.Spalte
- LET zm%=TRUNC((zt%)/16)+1 ! Akt.Zeile
- ' ..........................................................................
- ' Beides negativ, f Maus 1 Sp. links oder 1 Zl. oberhalb des Menüs:
- IF st%<0 ! nicht /0
- LET sm%=0 ! Simuliere Sp 0
- LET zm%=0 ! Simuliere Z 0
- LET mef!=TRUE ! M. n. auf Menü
- ENDIF !
- IF zt%<0 ! nicht /0
- LET sm%=0 ! Simuliere Sp 0
- LET zm%=0 ! Simuliere Z 0
- LET mef!=TRUE ! M. n. auf Menü
- ENDIF !
- ' ..........................................................................
- IF sm%>sp| ! Falls Maus rechts der letzten Spalte
- LET sm%=0 ! Simuliere Spalte 0
- LET zm%=0 ! Simuliere Zeile 0
- LET mef!=TRUE ! Maus ist nicht auf Menüeintrag
- ENDIF !
- IF zm%>zl| ! Falls Maus unterhalb der letzten Zeile
- LET sm%=0 ! Simuliere Spalte 0
- LET zm%=0 ! Simuliere Zeile 0
- LET mef!=TRUE ! Maus ist nicht auf Menüeintrag
- ENDIF !
- ' ..........................................................................
- ' PRINT AT(1,15);sm%,zm%,mef!
- IF erst!=TRUE ! F das 1. Mal hier
- LET erst!=FALSE ! Durchgangsnummer > 0
- IF wv!=TRUE ! Menüvorschlag: ja
- LET sm%=1 ! Simuliere Spalte 1
- LET zm%=1 ! Simuliere Zeile 1
- LET ms%=sm% ! jetzige Spalte merken
- LET mz%=zm% ! jetzige Zeile merken
- PRINT CHR$(27);CHR$(112); ! Invers ein
- LET i|=1 ! erste Eintragsnummer
- ' LET i|=(sm%-1)*zl|+zm% ! alte Eintragsnummer
- PRINT AT(sx|+(sm%-1)*ml|,sy|+zm%);a$(i|)
- PRINT CHR$(27);CHR$(113); ! Invers aus
- ENDIF !
- ELSE ! Falls mind. 1mal durch
- IF mef!=FALSE ! Maus ist auf Menüeintrag
- IF sm%<>ms% OR zm%<>mz% ! Falls Sp.od.Zle geänd.
- IF ms%<>0 AND mz%<>0 ! Letzter Eintr. vorhanden
- PRINT CHR$(27);CHR$(113); ! Invers aus
- LET i|=(ms%-1)*zl|+mz%! alte Eintragsnummer
- PRINT AT(sx|+(ms%-1)*ml|,sy|+mz%);a$(i|)
- ENDIF !
- PRINT CHR$(27);CHR$(112); ! Invers ein
- LET i|=(sm%-1)*zl|+zm% ! neue Eintragsnummer
- PRINT AT(sx|+(sm%-1)*ml|,sy|+zm%);a$(i|)
- PRINT CHR$(27);CHR$(113); ! Invers aus
- LET ms%=sm% ! jetzige Spalte merken
- LET mz%=zm% ! jetzige Zeile merken
- ENDIF ! EF Sp. oder Zl. geändert
- ENDIF !
- ENDIF !
- ' ..........................................................................
- LET m|=MOUSEK ! Maustaste retten
- IF ASC(INKEY$)=13 ! f Returntaste gedrückt:
- LET m|=1 ! linke MT simulieren
- LET mef!=FALSE ! Simuliere Maus auf Menüfeld
- ENDIF !
- EXIT IF mef!=TRUE AND m| ! Raus f MT neben Menüfeld
- ' ..........................................................................
- UNTIL mef!=FALSE AND m| AND mz%<>0 ! Raus,f RMT auf Menüfeld
- ' ............................................................................
- IF mef!=TRUE ! F nicht auf Menüfeld
- ' ..........................................................................
- LET w|=0 ! Kein Eintrag gewählt
- ' ..........................................................................
- ELSE ! F auf Menüfeld
- ' ..........................................................................
- IF iv! ! Falls erwünscht:
- ' Gewählten Eintrag wieder normal darstellen:
- PRINT CHR$(27);CHR$(113); ! Invers aus
- LET i|=(ms%-1)*zl|+mz% ! alte Eintragsnummer
- PRINT AT(sx|+(ms%-1)*ml|,sy|+mz%);a$(i|) ! normale Ausgabe
- ENDIF !
- ' ..........................................................................
- LET w|=i| ! In den Rückgabepar.die Nr.d.gewählten Eintrags
- ' ..........................................................................
- ENDIF
- ' ............................................................................
- IF bs!=TRUE ! f Blds. bisher schwarz:
- LET t%=0 ! Weiterlaufen ohne Overflow
- LET bs!=FALSE ! Bildschirm nicht mehr schwarz
- SPUT b$ ! Bildschirm wieder herstellen
- LET b$="" ! Versuch, Fehler: 'Speicher voll' zu verhindern
- SHOWM ! Maus her
- ENDIF !
- ' ----------------------------------------------------------------------------
- ' |1: Bei der compilierten Version blieb nach Aufruf des Gem-Menüs
- ' trotz des Befehls Closew 0 immer die erste Zeile ungeschwärzt,
- ' also versuche ich es jetzt so.
- ' ----------------------------------------------------------------------------
- RETURN
- > PROCEDURE a_eintraege_waehlen(wv!,ml|,sx|,sy|,sp|,zl|,VAR a$(),a!(),m|,w|)
- t2t|=26
- ' ----------------------------------------------------------------------------
- ' Diese Prozedur sorgt dafür, daß der Menüeintrag, auf den die Maus gerade
- ' zeigt, invers dargestellt wird. Dabei wird natürlich der letzte Eintrag
- ' wieder normal dargestellt. Falls der erste Übergabeparameter wv!
- ' wahr ist, so wird der erste Eintrag beim Aufruf der Prozedur automatisch
- ' invers dargestellt, so daß die Maus gar nicht mehr gebraucht wird. Ein
- ' Druck auf die [Return]-Taste reicht, um den vorgeschlagenen Eintrag als
- ' gewählt zu betrachten und die Prozedur zu verlassen. Statt der [Return]-
- ' Taste kann man auch die linke Maustaste zum entültigen Wählen benutzen.
- ' (Die 'Return'-Taste funktioniert jetzt nicht mehr!)
- ' ----------------------------------------------------------------------------
- LOCAL mef! ! Maus nicht auf Menüeintrag ?
- LOCAL erst! ! Erster Durchgang ?
- LOCAL i| ! Hier steht die Eintragsnummer
- LOCAL x% ! Maus-x-Koordinate
- LOCAL y% ! Maus-y-Koordinate
- LOCAL sm% ! Die Spalte, auf die die Maus gerade zeigt
- LOCAL zm% ! Die Zeile, auf die die Maus gerade zeigt
- LOCAL ms% ! Speicher für sm%
- LOCAL mz% ! Speicher für mz%
- LOCAL st% ! Spaltenterm
- LOCAL zt% ! Zeilenterm
- ' ............................................................................
- LET erst!=TRUE ! Erster Durchgang
- ' ............................................................................
- grosse_eingabeschleife: ! Anfang der Hauptschleife
- ' ............................................................................
- REPEAT ! Mausabfrageschleife
- ' ..........................................................................
- LET mef!=FALSE ! Maus ist erst mal evtl. auf Menüeintrag
- ' ..........................................................................
- SHOWM ! Mauszeiger bitte an und zwar immer !!!
- ' ..........................................................................
- LET x%=MOUSEX ! Maus-x-Koordinate
- LET y%=MOUSEY ! Maus-y-Koordinate
- ' ..........................................................................
- LET st%=x%-sx|*8 ! Spaltenterm
- LET zt%=y%-sy|*16 ! Zeilenterm
- ' Aktuelle Spalte (sm%) und Zeile (zm%) ermitteln:
- LET sm%=TRUNC((st%)/(ml|*8))+1 ! Akt.Spalte
- LET zm%=TRUNC((zt%)/16)+1 ! Akt.Zeile
- ' ..........................................................................
- ' Beides negativ, f Maus 1 Sp. links oder 1 Zl. oberhalb des Menüs:
- IF st%<0 ! nicht /0
- LET sm%=0 ! Simuliere Sp 0
- LET zm%=0 ! Simuliere Z 0
- LET mef!=TRUE ! M. n. auf Menü
- ENDIF !
- IF zt%<0 ! nicht /0
- LET sm%=0 ! Simuliere Sp 0
- LET zm%=0 ! Simuliere Z 0
- LET mef!=TRUE ! M. n. auf Menü
- ENDIF !
- ' ..........................................................................
- IF sm%>sp| ! Falls Maus rechts der letzten Spalte
- LET sm%=0 ! Simuliere Spalte 0
- LET zm%=0 ! Simuliere Zeile 0
- LET mef!=TRUE ! Maus ist nicht auf Menüeintrag
- ENDIF !
- IF zm%>zl| ! Falls Maus unterhalb der letzten Zeile
- LET sm%=0 ! Simuliere Spalte 0
- LET zm%=0 ! Simuliere Zeile 0
- LET mef!=TRUE ! Maus ist nicht auf Menüeintrag
- ENDIF !
- ' ..........................................................................
- ' PRINT AT(1,15);sm%,zm%,mef!
- IF erst!=TRUE ! F das 1. Mal hier
- LET erst!=FALSE ! Durchgangsnummer > 0
- IF wv!=TRUE ! Menüvorschlag: ja
- LET sm%=1 ! Simuliere Spalte 1
- LET zm%=1 ! Simuliere Zeile 1
- LET ms%=sm% ! jetzige Spalte merken
- LET mz%=zm% ! jetzige Zeile merken
- PRINT CHR$(27);CHR$(112); ! Invers ein
- LET i|=1 ! erste Eintragsnummer
- ' LET i|=(sm%-1)*zl|+zm% ! alte Eintragsnummer
- PRINT AT(sx|+(sm%-1)*ml|,sy|+zm%);a$(i|) ! Eintrag ausgeben
- PRINT CHR$(27);CHR$(113); ! Invers aus
- ENDIF !
- ELSE ! Falls mind. 1mal durch
- IF mef!=FALSE ! Maus ist auf Menüeintrag
- IF sm%<>ms% OR zm%<>mz% ! Falls Sp.od.Zle geänd.
- IF ms%<>0 AND mz%<>0 ! Letzter Eintr. vorhanden
- PRINT CHR$(27);CHR$(113); ! Invers aus
- LET i|=(ms%-1)*zl|+mz% ! alte Eintragsnummer
- IF a!(i|)=FALSE ! F nicht gewählt:
- PRINT AT(sx|+(ms%-1)*ml|,sy|+mz%);a$(i|) ! Eintrag ausgeben
- ENDIF !
- ENDIF !
- PRINT CHR$(27);CHR$(112); ! Invers ein
- LET i|=(sm%-1)*zl|+zm% ! neue Eintragsnummer
- PRINT AT(sx|+(sm%-1)*ml|,sy|+zm%);a$(i|)
- PRINT CHR$(27);CHR$(113); ! Invers aus
- LET ms%=sm% ! jetzige Spalte merken
- LET mz%=zm% ! jetzige Zeile merken
- ENDIF ! EF Sp. oder Zl. geändert
- ENDIF !
- ENDIF !
- ' ..........................................................................
- LET m|=MOUSEK ! Maustaste retten
- IF m|=2 ! F rechte Maustaste:
- LET mef!=TRUE ! Auch raus
- ENDIF !
- EXIT IF mef!=TRUE AND m| ! Raus f MT neben Menüfeld
- ' ..........................................................................
- UNTIL mef!=FALSE AND m| AND mz%<>0 ! Raus,f RMT auf Menüfeld
- ' ............................................................................
- IF mef!=FALSE ! F auf Menüfeld
- ' ..........................................................................
- ' Gewählten Eintrag merken, d.h. in a!() als gewählt/nicht gew. verzeichnen:
- ' ..........................................................................
- LET i|=(ms%-1)*zl|+mz% ! alte Eintragsnummer
- ' ..........................................................................
- IF a!(i|)=TRUE ! F bereits gewählt:
- LET a!(i|)=FALSE ! Code für 'Eintrag nicht gew.'
- PRINT CHR$(27);CHR$(113); ! Invers aus
- PRINT AT(sx|+(ms%-1)*ml|,sy|+mz%);a$(i|) ! Eintrag ausgeben
- ELSE ! F noch nicht gewählt:
- LET a!(i|)=TRUE ! Code für 'Eintrag gewählt'
- PRINT CHR$(27);CHR$(112); ! Invers ein
- PRINT AT(sx|+(ms%-1)*ml|,sy|+mz%);a$(i|) ! Eintrag ausgeben
- LET w|=1 ! etwas gewählt
- ENDIF ! EFU bereits gewählt/nicht gew
- ' ..........................................................................
- REPEAT ! Warteschleife für Mauseingabe:
- UNTIL MOUSEK=0 ! Erst Raus,wenn Maus nix mehr meldet,also Puffer leer
- ' ..........................................................................
- GOTO grosse_eingabeschleife ! geh zum Anfang der Hauptschl.
- ' ..........................................................................
- ENDIF !
- PRINT CHR$(27);CHR$(113); ! Invers aus
- ' ----------------------------------------------------------------------------
- RETURN
- > PROCEDURE a_eintraginput(ml7|,di7|,sx7|,sy7|,sp7|,zl7|,m7|,w7|,VAR a7$())
- t2t|=27
- ' ----------------------------------------------------------------------------
- ' Hier kann man in einem Menüeintrag etwas eingeben.
- ' ----------------------------------------------------------------------------
- LOCAL si7| ! Spalte für Input
- LOCAL zi7| ! Zeile für Input
- ' ............................................................................
- ' si7|=TRUNC(w7|/sp7|)+1 ! Spalte f.Input
- ' PRINT AT(1,1);"w7|,sp7|,si7|,zl7|" ! Zeile f. Input
- ' PRINT AT(1,2);w7|,sp7|,si7|,zl7| ! Zeile f. Input
- ' zi7|=w7|-(si7|-1)*zl7| ! Zeile f. Input
- ' ..........................................................................
- LET x7%=MOUSEX ! Maus-x-Koordinate
- LET y7%=MOUSEY ! Maus-y-Koordinate
- LET st7%=x7%-sx7|*8 ! Spaltenterm
- LET zt7%=y7%-sy7|*16 ! Zeilenterm
- ' Aktuelle Spalte (sm7%) und Zeile (zm7%) ermitteln:
- LET sm7%=TRUNC((st7%)/(ml7|*8))+1 ! Akt.Spalte
- LET zm7%=TRUNC((zt7%)/16)+1 ! Akt.Zeile
- LET si7|=sm7% ! Var-Type ändern
- LET zi7|=zm7% ! Var-Type ändern
- ' ............................................................................
- ' PRINT AT(sx7|+(si7|-1)*ml7|-1,sy7|+zi7|); ! Positionieren
- ' ............................................................................
- LET a$=a7$(w7|) ! Zwischenspeicher
- @a_input(sx7|+(si7|-1)*ml7|,sy7|+zi7|,ml7|-1,m7|,a$)! Eingabe
- LET a7$(w7|)=a$ ! Rückgabe
- ' FORM INPUT ml7|-1 AS a7$(w7|) ! Eingabe
- ' ............................................................................
- ' Alle Strings wurden, um das Input überhaupt zu ermöglichen, um di7|
- ' Spaces am rechten Rand erweitert, das muß auch mit dem geängerten
- ' String geschehen. Das passiert in der folgenden Zeile:
- LET a7$(w7|)=a7$(w7|)+SPACE$(di7|)
- ' ----------------------------------------------------------------------------
- RETURN
- > PROCEDURE a_input(sp|,zl|,l|,m|,VAR a$)
- ' ----------------------------------------------------------------------------
- ' Ersetzt das GFA-Input. Zurück geht immer ein String der Länge l|, notfalls
- ' rechts mit Spaces aufgefüllt.
- ' ----------------------------------------------------------------------------
- ' sp| ! Startspalte der Eingabe
- ' zl| ! Startzeile der Eingabe
- ' l| ! Sollänge der Eingabe
- ' m| ! Maustaste, vorerst nicht benutzt
- ' a$ ! Eingabestring,evtl. ist Vorschlag drin
- LOCAL z| ! Ascii-Speicher für eingegebenes Zeichn
- LOCAL al| ! Aktuelle Länge des Eingabestrings
- LOCAL b$ ! Cursorspeicher
- ' ............................................................................
- LET a$=LEFT$(a$,l|) ! Überflüssiges am Vorschlagstring weg.
- ' ............................................................................
- LET b$=CHR$(27)+CHR$(112)+" " ! Cursor konstruieren
- LET b$=b$+CHR$(27)+CHR$(113) ! Cursor konstruieren
- PRINT AT(sp|,zl|);a$;b$ ! Cursor ein
- ' ............................................................................
- HIDEM ! Mauspfeil weg
- REPEAT ! Warteschleife für Maus- und Tastatur-
- UNTIL MOUSEK=0 AND INKEY$="" ! puffer
- ' ............................................................................
- DO ! Hauptschleifenanfang
- ' ..........................................................................
- REPEAT ! Eingabeschleife
- LET z|=ASC(INKEY$) ! Zeichen von der Tastatur lesen
- LET m|=MOUSEK ! Maustaste retten
- IF MOUSEK ! F Maustaste gedrückt
- LET z|=13 ! Tu so, als sei 'Return'-Taste gedrückt
- ENDIF !
- UNTIL z|=8 OR z|=13 OR z|>31 ! Raus f Zeichen eingegeben
- LET al|=LEN(a$) ! Aktuelle Länge abspeichern
- EXIT IF z|=13 ! Raus f 'RETURN'-Taste gedrückt
- ' ..........................................................................
- IF z|=8 AND al|>0 ! F 'BACKSPACE'-Taste und String<>leer
- LET a$=LEFT$(a$,al|-1) ! Backspace ausführen
- DEC al| ! Aktuelle Stringlänge aktualisieren
- PRINT AT(sp|,zl|);a$;b$; ! Zchn raus
- IF al|<l| ! F akt. Länge < Sollänge
- PRINT SPACE$(l|-al|) ! rechts Vom Cursor weiß
- ENDIF !
- ELSE IF al|<l| AND z|>31 ! F Normale Taste und kleiner Maxlänge
- LET a$=a$+CHR$(z|) ! Eingabestring erweitern
- LET a$=UPPER$(a$) ! Nur Großbuchstaben
- INC al| ! Aktuelle Stringlänge aktualisieren
- PRINT AT(sp|,zl|);a$;b$; ! Zchn raus
- IF al|<l| ! F akt. Länge < Sollänge
- PRINT SPACE$(l|-al|) ! rechts Vom Cursor weiß
- ENDIF !
- ENDIF !
- ' ..........................................................................
- LOOP ! Hauptlschleifenende
- ' ............................................................................
- PRINT AT(sp|,zl|);a$;" " ! Cursor aus
- LET a$=a$+SPACE$(l|-al|) ! Rechts mit Spaces auffüllen
- ' ----------------------------------------------------------------------------
- RETURN
- > PROCEDURE a_menueeintraege_minus_di8(sp8|,zl8|,ml8|,di8|,VAR a8$())
- ' ----------------------------------------------------------------------------
- ' Hier wird die zusätzliche Länge für Input wieder abgezogen
- ' ----------------------------------------------------------------------------
- LOCAL i8| ! Zähler für Einträge
- ' ............................................................................
- LET di8|=1 ! Für Input zusätliche di8| Spaces
- ' ............................................................................
- FOR i8|=1 TO sp8|*zl8| ! Alle Einträge durch
- LET a8$(i8|)=LEFT$(a8$(i8|),ml8|-di8|) ! Inputlängenzugabe wieder abziehen
- NEXT i8| ! nächster Eintrag
- ' ----------------------------------------------------------------------------
- RETURN
- ' ##############################################################################
- ' D A T E N :
- ' ##############################################################################
- > PROCEDURE 0_menuedaten
- ' ----------------------------------------------------------------------------
- hauptmenue:
- DATA Speicher
- DATA Arbeiten
- DATA Blockfkt
- DATA Hilf/End
- DATA ##
- ' ............................................................................
- diskette:
- DATA Accessories
- DATA ------------------------------
- DATA Stück von Diskette laden
- DATA Stück auf Diskette abspeichern
- DATA ------------------------------
- DATA Stück aus Hauptfile laden
- DATA Stück in Hauptfile abspeichern
- DATA ------------------------------
- DATA Hauptfile laden
- DATA Hauptfile abspeichern
- DATA bestimmte Stücke löschen
- DATA ------------------------------
- DATA 2.Hauptfile laden
- DATA 1. & 2.Hauptfile vertauschen
- DATA best. Stücke ins 2.Hptfle kop.
- DATA ------------------------------
- DATA beliebiges Diskfile löschen
- DATA Diskfile umbenennen
- DATA ##
- ' ............................................................................
- arbeiten:
- DATA Midi ausschalten
- DATA Nr-Ton-Codierung ausschalten
- DATA Taktschlagzeug ausschalten
- DATA ---------------------------------
- DATA Gebundenzeichen setzen/löschen
- DATA Unt.Klav.zchn setzen/löschen
- DATA Taktstrich setzen/löschen
- DATA ---------------------------------
- DATA Basistonlänge verändern
- DATA bestimmte Stücke spielen
- DATA best.St.direkt hintereinander sp.
- DATA alle Stücke ab Nr x spielen
- DATA ---------------------------------
- DATA Stücknamen ändern
- DATA Inhaltsverzeichnis alph. ordnen
- DATA ---------------------------------
- DATA Inhaltsverz.vom Hauptfile drucken
- DATA Aktuelles Stück drucken
- DATA bestimmte Stücke drucken
- DATA ##
- ' ............................................................................
- blockfkt:
- DATA Blockanfang/-ende setzen
- DATA Blockmarkierung löschen
- DATA ---------------------------------
- DATA Block kopieren
- DATA ---------------------------------
- DATA Blocknotenlängen verdoppeln
- DATA Blocknoten transponieren
- DATA automatisch Taktstrich setzen
- DATA suchen und ersetzen im Block
- DATA ---------------------------------
- DATA Block löschen
- DATA ##
- ' ............................................................................
- prg_ende:
- DATA Hilfstext
- DATA -----------------------
- ' Folgenden Menüpunkt gibt's in der PD-Version nicht:
- DATA Edit
- DATA -----------------------
- DATA Quit
- DATA ##
- ' ----------------------------------------------------------------------------
- RETURN
- > PROCEDURE 0_gemmenuedaten
- ' ----------------------------------------------------------------------------
- gemmenuedaten: ! Read-Zeiger setzen
- ' ............................................................................
- DATA Desk, Duedita ,--------------------,1,2,3,4,5,6,
- DATA Zurück, Zurück,##
- ' ----------------------------------------------------------------------------
- RETURN
- > PROCEDURE 0_notenkopf_y_start_daten
- ' ----------------------------------------------------------------------------
- y_anfang_notenkopf: ! dito innerhalb einer Note |2
- DATA 2,5,7,7,10,10,12,12,15,17,17
- DATA 20,20,22,25,25,27,27,30,30
- DATA 32,35,35,37,37
- ' ----------------------------------------------------------------------------
- RETURN
- > PROCEDURE 0_notenkopfdaten
- ' ----------------------------------------------------------------------------
- rekonstruktionsdaten: !
- DATA 632,343,632,343
- DATA 632,343,632,343
- DATA 632,343,632,343
- DATA 632,343,632,343
- DATA 632,343,632,343
- DATA 632,343,632,343
- DATA 631,343,632,343
- DATA 631,343,631,343
- DATA 631,343,631,343
- DATA 631,344,631,343
- DATA 630,344,631,344
- DATA 630,344,630,344
- DATA 630,345,630,344
- DATA 630,346,630,345
- DATA 630,346,630,346
- DATA 631,347,630,346
- DATA 631,348,631,347
- DATA 632,348,631,348
- DATA 632,348,632,348
- DATA 633,348,633,348
- DATA 634,348,633,348
- DATA 634,348,634,348
- DATA 634,348,634,348
- DATA 635,348,634,348
- DATA 635,348,635,348
- DATA 635,348,635,348
- DATA 635,347,635,348
- DATA 635,347,635,347
- DATA 635,345,635,347
- DATA 635,344,635,345
- DATA 635,343,635,344
- DATA 635,341,635,343
- DATA 635,340,635,341
- DATA 635,339,635,340
- DATA 633,337,635,339
- DATA 633,336,633,337
- DATA 632,335,633,336
- DATA 632,333,632,335
- DATA 632,332,632,333
- DATA 632,331,632,332
- DATA 631,329,632,331
- DATA 631,327,631,329
- DATA 630,326,631,327
- DATA 630,325,630,326
- DATA 629,324,630,325
- DATA 629,322,629,324
- DATA 628,322,629,322
- DATA 628,320,628,322
- DATA 628,319,628,320
- DATA 628,318,628,319
- DATA 627,317,628,318
- DATA 627,316,627,317
- DATA 627,314,627,316
- DATA 627,314,627,314
- DATA 627,313,627,314
- DATA 627,312,627,313
- DATA 627,311,627,312
- DATA 627,311,627,311
- DATA 628,310,627,311
- DATA 628,309,628,310
- DATA 628,309,628,309
- DATA 629,309,628,309
- DATA 629,308,629,309
- DATA 630,308,629,308
- DATA 630,308,630,308
- DATA 630,308,630,308
- DATA 632,307,630,308
- DATA 632,307,632,307
- DATA 632,307,632,307
- DATA 632,307,632,307
- DATA 632,307,632,307
- DATA 633,307,632,307
- DATA 634,308,633,307
- DATA 634,309,634,308
- DATA 635,311,634,309
- DATA 635,312,635,311
- DATA 636,312,635,312
- DATA 636,314,636,312
- DATA 636,315,636,314
- DATA 636,316,636,315
- DATA 636,317,636,316
- DATA 636,318,636,317
- DATA 636,319,636,318
- DATA 636,321,636,319
- DATA 636,322,636,321
- DATA 636,323,636,322
- DATA 635,324,636,323
- DATA 634,325,635,324
- DATA 633,326,634,325
- DATA 632,326,633,326
- DATA 632,327,632,326
- DATA 630,329,632,327
- DATA 630,329,630,329
- DATA 629,331,630,329
- DATA 628,331,629,331
- DATA 628,332,628,331
- DATA 627,334,628,332
- DATA 627,335,627,334
- DATA 627,335,627,335
- DATA 627,336,627,335
- DATA 627,336,627,336
- DATA 627,337,627,336
- DATA 628,338,627,337
- DATA 629,339,628,338
- DATA 630,339,629,339
- DATA 631,339,630,339
- DATA 632,339,631,339
- DATA 633,339,632,339
- DATA 633,339,633,339
- DATA 634,339,633,339
- DATA 634,339,634,339
- DATA 634,339,634,339
- DATA 635,339,634,339
- DATA 636,338,635,339
- DATA 636,338,636,338
- DATA 636,336,636,338
- DATA 636,335,636,336
- DATA 636,333,636,335
- DATA 636,333,636,333
- DATA 635,333,636,333
- DATA 634,333,635,333
- DATA 632,333,634,333
- DATA 632,333,632,333
- DATA 631,333,632,333
- DATA 630,333,631,333
- DATA 630,334,630,333
- DATA 630,335,630,334
- DATA 630,335,630,335
- DATA 630,336,630,335
- DATA 630,337,630,336
- DATA 630,337,630,337
- DATA 630,337,630,337
- DATA 632,344,632,344
- DATA 632,344,632,344
- DATA 632,344,632,344
- DATA 633,344,632,344
- DATA 633,344,633,344
- DATA 633,344,633,344
- DATA 633,344,633,344
- DATA 633,343,633,344
- DATA 633,343,633,343
- DATA 632,343,633,343
- DATA 632,343,632,343
- DATA 632,343,632,343
- DATA 631,343,632,343
- DATA 631,343,631,343
- DATA 631,343,631,343
- DATA 632,344,631,343
- DATA 632,344,632,344
- DATA 632,344,632,344
- DATA 632,344,632,344
- DATA 632,344,632,344
- DATA 632,344,632,344
- DATA 632,344,632,344
- DATA 632,344,632,344
- DATA 632,344,632,344
- DATA 632,344,632,344
- DATA 633,344,632,344
- DATA 633,344,633,344
- DATA 633,344,633,344
- DATA 633,344,633,344
- DATA -1,0,0,0
- ' ----------------------------------------------------------------------------
- RETURN
- > PROCEDURE 0_hilfstextdaten
- ' ----------------------------------------------------------------------------
- hilfstext:
- DATA ---------------------------------------------------------------------------
- DATA H I L F S T E X T Z U D U E D I T A 2 . 0
- DATA ---------------------------------------------------------------------------
- DATA Dieser Hilfstext..............Helptaste
- DATA Note vor Cursor löschen.......Backspace-Taste
- DATA Leerplatz vor Cursor..........Insert-Taste
- DATA Undo nach ....................Undo-Taste (laden/Blck löschen/verdoppeln)
- DATA ---------------------------------------------------------------------------
- DATA Noten abspielen...............Rechte Maustaste auf Vor-Cursor-Note
- DATA Cursor neu setzen.............Linke Maustaste auf Nicht-Cursor-Note
- DATA Taktstrich setzen / löschen...Linke Maustaste auf Cursor-Note
- DATA Gebundenzchn setzen / löschen.Rechte Maustaste auf Cursor-Note
- DATA Unt.Klaviaturzchn stzn/löschn.Rechte Maustaste auf Hinter-Cursor-Note
- DATA Blockanfang / - ende setzen...Rechte Maust. + Alt.-taste auf Cursor-Note
- DATA Block kopieren................rechte Mt + Shiftlinks-taste auf Nicht-Blckn
- DATA Block löschen.................rechte Maustaste + Ctrl.-taste auf Blocknte
- DATA Blocknotenlängen verdoppeln...rechte Maustaste + Alt.-taste Blocknote
- DATA Blocknoten transponieren......rechte Maustaste auf Blocknote
- DATA ---------------------------------------------------------------------------
- DATA Ton ausschließlich hören......Klaviaturtaste
- DATA Ton hören und übernehmen......Klaviaturtaste + Alternate-Taste
- DATA Pause.........................Space-Taste
- DATA ---------------------------------------------------------------------------
- DATA ##
- ' ----------------------------------------------------------------------------
- RETURN
- > PROCEDURE 0_notennamen
- ' ----------------------------------------------------------------------------
- notennamen:
- DATA C,Cis,D,Dis,E,F,Fis,G,Gis,A,Ais,H
- DATA c,cis,d,dis,e,f,fis,g,gis,a,ais,h
- DATA c',cis',d',dis',e',f',fis',g',gis',a',ais',h'
- DATA c'',cis'',d'',dis'',e'',f'',fis'',g'',gis'',a'',ais'',h''
- DATA c''',P
- DATA ##
- ' ----------------------------------------------------------------------------
- RETURN
- ' ##############################################################################
- ' P R O G R A M M T E X T E N D E :
- ' ##############################################################################
-